UWAGA! Wyczyścić listę mapowanie_osob_bn_pbl_po_imporcie (za dużo niepoprawnych relacji pbl-bn po ostatnim imporcie) Przed rozpoczęciem pracy zaktualizuj zgodnie z obecnym stanem bazy listę książek na dysku za poprzedni rocznik. Przed rozpoczęciem pracy wyszukaj frazy “bezpiecznik” i “aktualizacja”.
options(java.parameters = "-Xmx32000m")
Komunikat ostrzegawczy:
package ‘RJDBC’ was built under R version 3.6.3
options(scipen = 999)
pacman::p_load(utf8,googlesheets4,zoo,stringr,splitstackshape,plyr,dplyr,sqldf,stringdist,fuzzyjoin,data.table,svMisc,tidyverse,RJDBC,arrangements,tokenizers,openxlsx,jsonlite)
`%notin%` <- Negate(`%in%`)
#połączenie z bazą PBL
jdbcDriver =JDBC("oracle.jdbc.OracleDriver",classPath=paste("C:/Users/",employee_name,"/Downloads/ojdbc6.jar",sep = ""))
PBL <- dbConnect(jdbcDriver, "jdbc:oracle:thin:@//pbl.ibl.poznan.pl:1521/xe", "IBL_SELECT", "CR333444")
bn_ks <- chunk1
#wczytanie listy utożsamionych twórców z autorami BN
#bezpiecznik: użyć sheets_auth() z konsoli
pbl_viaf <- sheets_read(ss = "1cEz73dGN2r2-TTc702yne9tKfH9PQ6UyAJ2zBSV6Jb0") %>%
filter(czy_ten_sam!="nie") %>%
select(pbl_id, BN_id, BN_name) %>%
mutate(BN_name = str_replace_all(BN_name,"\\|\\(", " ("),
BN_name = str_replace_all(BN_name, "\\;\\|", "; ")) %>%
cSplit(.,"BN_name",sep = "|",direction = "long") %>%
filter(BN_name!="")
Reading from 'mapowanie_osob_bn_pbl'
pbl_viaf2 <- sheets_read(ss = "1_Bhwzo0xu4yTn8tF0ZNAZq9iIAqIxfcrjeLVCm_mggM") %>%
filter(czy_ten_sam!="nie") %>%
select(pbl_id, BN_id, BN_name) %>%
mutate(BN_name = str_replace_all(BN_name,"\\|\\(", " ("),
BN_name = str_replace_all(BN_name, "\\;\\|", "; ")) %>%
cSplit(.,"BN_name",sep = "|",direction = "long") %>%
filter(BN_name!="")
Reading from 'mapowanie_osob_bn_pbl_druga_czesc'
pbl_viaf3 <- sheets_read(ss = "1L-7Zv9EyLr5FeCIY_s90rT5Hz6DjAScCx6NxfuHvoEQ") %>%
filter(czy_ten_sam!="nie") %>%
select(pbl_id, BN_id, BN_name) %>%
mutate(BN_name = str_replace_all(BN_name,"\\|\\(", " ("),
BN_name = str_replace_all(BN_name, "\\;\\|", "; ")) %>%
cSplit(.,"BN_name",sep = "|",direction = "long") %>%
filter(BN_name!="")
Reading from 'mapowanie_osob_bn_pbl_po_imporcie'
pbl_viaf <- rbind(pbl_viaf,pbl_viaf2, pbl_viaf3) %>%
arrange(pbl_id) %>%
unique()
remove(pbl_viaf2)
remove(pbl_viaf3)
#bezpiecznik!
#sprawdź, czy jedno hasło bn nie zasila kilku haseł twórców pbl
# pbl_viaf_test1 <- sheets_read(ss = "1cEz73dGN2r2-TTc702yne9tKfH9PQ6UyAJ2zBSV6Jb0") %>%
# filter(czy_ten_sam!="nie") %>%
# select(pbl_id, BN_id, BN_name)
# pbl_viaf_test2 <- sheets_read(ss = "1_Bhwzo0xu4yTn8tF0ZNAZq9iIAqIxfcrjeLVCm_mggM") %>%
# filter(czy_ten_sam!="nie") %>%
# select(pbl_id, BN_id, BN_name)
# pbl_viaf_test3 <- sheets_read(ss = "1L-7Zv9EyLr5FeCIY_s90rT5Hz6DjAScCx6NxfuHvoEQ") %>%
# filter(czy_ten_sam!="nie") %>%
# select(pbl_id, BN_id, BN_name)
# pbl_viaf_test <- rbind(pbl_viaf_test1,pbl_viaf_test2,pbl_viaf_test3) %>%
# arrange(pbl_id) %>%
# unique()
#
# count <- as.data.frame(table(pbl_viaf_test$BN_id))
# pbl_viaf_test_1 <- merge(pbl_viaf_test,count,by.x = "BN_id",by.y = "Var1",all.x = TRUE) %>%
# unique()
#bezpiecznik!
#w obiekcie pbl_viaf_test_1 przy frekwencji większej niż 1 należy przeanalizować grupy, jeśli do tego samego identyfikatora pbl przypisane sa różne identyfikatory bn, które jednak opisują tę samą osobę, to wszystko jest okej; w przeciwnym razie trzeba przeprowadzić korektę w plikach "mapowanie_osob_bn_pbl"
# count2 <- as.data.frame(table(pbl_viaf_test$pbl_id))
# pbl_viaf_test_2 <- merge(pbl_viaf_test,count2,by.x = "pbl_id",by.y = "Var1",all.x = TRUE) %>%
# unique()
#bezpiecznik!
#dla grupy o frekwencji większej niż 1 sprawdź, czy w zestawie identyfikatorów bn nie ma rażących błędów; w przeciwnym razie trzeba przeprowadzić korektę w plikach "mapowanie_osob_bn_pbl"
#utożsamianie po nazewnictwie z informacją o dziale
tworca_i_dzial <- dbGetQuery(PBL,
"select tw.tw_tworca_id \"pbl_id\", dz.dz_dzial_id||'|'||dz.dz_nazwa \"osoba_pbl_dzial_id_name\"
from pbl_tworcy tw
full join pbl_dzialy dz on dz.dz_dzial_id=tw.tw_dz_dzial_id")
#listy nazwisk BN ze zbioru
#100
marc_field_100 <- bn_ks %>%
select(id,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(bn_ks$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
Progress: 1 on 7 Progress: 2 on 7 Progress: 3 on 7 Progress: 4 on 7 Progress: 5 on 7 Progress: 6 on 7 Progress: 7 on 7
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
Progress: 1 on 7 Progress: 2 on 7 Progress: 3 on 7 Progress: 4 on 7 Progress: 5 on 7 Progress: 6 on 7 Progress: 7 on 7
marc_field_100 <- marc_field_100 %>%
select(id,`$a`,`$d`,`$c`) %>%
mutate(name = ifelse(!is.na(`$c`)&substr(`$c`,nchar(`$c`),nchar(`$c`))==";",paste(`$a`,`$c`,`$d`,sep = " "),ifelse(!is.na(`$d`),paste(`$a`,`$d`,sep = " "),as.character(`$a`)))) %>%
select(id,name) %>%
mutate(name = str_replace(name,"(\\))(\\.$)","\\1"),
name = str_replace(name, "([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)","\\1"))
osoba_bn_100_pbl <- marc_field_100 %>%
unique() %>%
inner_join(.,pbl_viaf,by = c("name" = "BN_name")) %>%
select(1:3) %>%
left_join(.,tworca_i_dzial,by = "pbl_id") %>%
select(id,osoba_pbl_dzial_id_name) %>%
group_by(id) %>%
mutate(osoba_bn_autor = paste(unique(osoba_pbl_dzial_id_name),collapse = "~")) %>%
select(-osoba_pbl_dzial_id_name) %>%
ungroup() %>%
unique()
Column `name`/`BN_name` joining character vector and factor, coercing into character vector
#600
marc_field_600 <- bn_ks %>%
select(id,X600)%>%
filter(X600!="") %>%
mutate(X600=str_replace_all(X600,"(^|\\|)","~\\1")) %>%
cSplit(.,"X600",sep = "~",direction = "long") %>%
filter(X600!="") %>%
mutate(X600=str_remove_all(X600,"^\\|")) %>%
mutate(indicator = str_replace_all(X600,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(bn_ks$X600,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_600)[1]))
colnames(empty_table) <-subfield_list
marc_field_600<-cbind(marc_field_600,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_600$X600 <- str_replace(marc_field_600$X600,subfield_list_char[i],"|\\1")
}
Progress: 1 on 13 Progress: 2 on 13 Progress: 3 on 13 Progress: 4 on 13 Progress: 5 on 13 Progress: 6 on 13 Progress: 7 on 13 Progress: 8 on 13 Progress: 9 on 13 Progress: 10 on 13 Progress: 11 on 13 Progress: 12 on 13 Progress: 13 on 13
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_600[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_600$X600),str_replace_all(gsub(string,"\\3",marc_field_600$X600),"\\${2}.", "~"),NA)
}
Progress: 1 on 13 Progress: 2 on 13 Progress: 3 on 13 Progress: 4 on 13 Progress: 5 on 13 Progress: 6 on 13 Progress: 7 on 13 Progress: 8 on 13 Progress: 9 on 13 Progress: 10 on 13 Progress: 11 on 13 Progress: 12 on 13 Progress: 13 on 13
marc_field_600 <- marc_field_600 %>%
select(id,`$a`,`$d`,`$c`) %>%
mutate(name = ifelse(!is.na(`$c`)&substr(`$c`,nchar(`$c`),nchar(`$c`))==";",paste(`$a`,`$c`,`$d`,sep = " "),ifelse(!is.na(`$d`),paste(`$a`,`$d`,sep = " "),as.character(`$a`)))) %>%
select(id,name) %>%
mutate(name = str_replace(name,"(\\))(\\.$)","\\1"),
name = str_replace(name, "([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)","\\1"))
osoba_bn_600_pbl <- marc_field_600 %>%
unique() %>%
inner_join(.,pbl_viaf,by = c("name" = "BN_name")) %>%
select(1:3) %>%
left_join(.,tworca_i_dzial,by = "pbl_id") %>%
select(id,osoba_pbl_dzial_id_name) %>%
group_by(id) %>%
mutate(osoba_bn_temat = paste(unique(osoba_pbl_dzial_id_name),collapse = "~")) %>%
select(-osoba_pbl_dzial_id_name) %>%
ungroup() %>%
unique()
Column `name`/`BN_name` joining character vector and factor, coercing into character vector
bn_ks <- bn_ks %>%
full_join(.,osoba_bn_100_pbl,by = "id") %>%
full_join(.,osoba_bn_600_pbl,by = "id")
#bezpiecznik!
#sprawdzić
#jeśli obiekt bezpiecznik będzie miał jakiekolwiek wiersze, to oznacza, że w pliku "mapowanie_osob_bn_pbl" jest wiersz z twórcą, którego nie ma w bazie lub jego identyfikator jest błędny
#jeśli obiekt bezpiecznik jest pusty - to wszystko okej
# sprawdz czy id tworcy z ktorejs tabeli na dysku istnieje w bazie oracle, jesli nie, wklej id tworcy z oracla do tabeli lub - jeśli nie ma takiego twórcy w bazie usuń wiersz w tabeli. Następnie dopisz fragment kodu, by usunąć kolumny osoba_bn_autor i osoba_bn_temat (po tej operacji usuń dopisany kod) i uruchom chunk ponownie
# bn_ks <- bn_ks %>%
# select(-osoba_bn_autor,-osoba_bn_temat)
bezpiecznik <- bn_ks %>%
filter(osoba_bn_autor=="NA")
chunk2 <- bn_ks
#wskazanie interesujących PBL dziedzin wiedzy po UKD i określenie typu UKD
bn_ks <- chunk2 %>%
mutate(dziedzina_PBL = ifelse(str_detect(X080,"(?<=\\$a|:|\\[|\\+|\\()(82)"),"ukd_lit",
ifelse(str_detect(X080,"(?<=\\$a|:|\\[|\\+)(791)")|str_detect(X080,"(?<=\\$a|:)(792)")|str_detect(X080,"\\$a7\\.09"),"ukd_tfrtv",
ifelse(str_detect(X080,"(?<=\\$a01)(\\(|\\/|2|4|5|9)")|str_detect(X080,"(?<=\\$a|\\[])(050)")|str_detect(X080,"(?<=\\$a|:|\\[|\\+|\\()(811\\.162)"),"ukd_biblio",
ifelse(str_detect(X080,"\\$a002")|str_detect(X080,"(?<=\\$a|:)(305)")|str_detect(X080,"(?<=\\$a39|:39)(\\(438\\)|8\\.2)")|str_detect(X080,"(?<=\\$a|:)(929[^\\.]051)")|str_detect(X080,"(?<=\\$a|:)(929[^\\.]052)"),"ukd_pogranicze","bez_ukd_PBL")))))
#ograniczenie rekordów z ukd językowym
biblio <- bn_ks %>%
select(id, X008, X009, X015, X041, X044, X080, X100, X245, X246, X250, X260, X300, X380, X386, X490, X500, X501, X546, X600, X650, X655, X700, X710, X800, X830, rok, BN_URL, osoba_bn_autor, osoba_bn_temat, dziedzina_PBL) %>%
filter(dziedzina_PBL=="ukd_biblio")
dobre_biblio <- biblio %>%
filter(!grepl("Podręczniki dla dzieci|Podręczniki dla szkół podstawowych",X655),
!grepl("szkoły podstawowe|rozmówki|nauczanie|logopedia",X650,ignore.case = TRUE),
!grepl("811\\.162\\.1\\(075\\.2\\)|811\\.162\\'24\\(078\\)",X080),
!grepl("ćwiczenia i zadania|poradniki dla nauczycieli|słownik.*?\\-polski|słownik polsko\\-|Słowniki dla dzieci",X655,ignore.case = TRUE),
!(grepl("Podręczniki",X655)&grepl("Kształcenie nauczycieli",X650)))
dobre_biblio2 <- biblio %>%
filter(!(is.na(osoba_bn_autor)&is.na(osoba_bn_temat)))
dobre_biblio <- dobre_biblio %>%
bind_rows(dobre_biblio2 %>% filter(id %notin% dobre_biblio$id))
zle_biblio <- biblio %>%
filter(id %notin% dobre_biblio$id)
bn_ks$dziedzina_PBL[bn_ks$id %in% zle_biblio$id] <- NA
#wskazanie interesujących PBL rekordów bez UKD, które są w kluczu PBL
bez_ukd_ale_PBL <- bn_ks %>%
select(id, X080, X650, X655, osoba_bn_autor, osoba_bn_temat, dziedzina_PBL) %>%
filter(dziedzina_PBL == "bez_ukd_PBL"&X080==""&is.na(osoba_bn_autor)&is.na(osoba_bn_temat)) %>%
mutate(bez_ukd_ale_PBL = grepl("literat|literac|pisar|bajk|dramat|epigramat|esej|felieton|film|komedi|nowel|opowiadani|pamiętnik|poemiks|poezj|powieść|proza|reportaż|satyr|wspomnieni|Scenariusze zajęć|Podręczniki dla gimnazjów|teatr|Nagrod|aforyzm|baśń|baśnie|polonijn|dialogi|fantastyka naukowa|legend|pieśń|poemat|przypowieś|honoris causa|filologi|kino polskie|pieśni|interpretacj",X650, ignore.case = TRUE)|grepl("literat|literac|pisar|bajk|dramat|epigramat|esej|felieton|film|komedi|nowel|opowiadani|pamiętnik|poemiks|poezj|powieść|proza|reportaż|satyr|wspomnieni|Scenariusze zajęć|Podręczniki dla gimnazjów|teatr|Nagrod|aforyzm|baśń|baśnie|polonijn|dialogi|fantastyka naukowa|legend|pieśń|poemat|przypowieś|honoris causa|filologi|kino polskie|pieśni|interpretacj",X655,ignore.case = TRUE)) %>%
filter(bez_ukd_ale_PBL == TRUE) %>%
select(id) %>%
mutate(bez_ukd_ale_PBL = "tak")
bn_ks <- bn_ks %>%
full_join(.,bez_ukd_ale_PBL,by = "id")
#Biblia
biblia <- bn_ks %>%
filter(grepl("biblia", X630, ignore.case = TRUE),
grepl("analiza i interpretacja|edycja krytyczna|materiały konferencyjne", X655, ignore.case = TRUE)) %>%
select(id) %>%
mutate(czy_biblia = "tak")
bn_ks <- bn_ks %>%
full_join(biblia,by = "id")
#wspomnienia,pamiętniki,literatura podróżnicza,reportaż
wspomnienia <- bn_ks %>%
mutate(czy_wspomnienia_reportaz = ifelse(str_detect(X655,"Pamiętniki i wspomnienia")|str_detect(X655,"Literatura podróżnicza")|str_detect(X655,"Pamiętniki")|str_detect(X655,"Reportaż")|str_detect(X655,"Relacja z podróży"),"tak",NA)) %>%
select(id,czy_wspomnienia_reportaz) %>%
unique()
bn_ks <- bn_ks %>%
full_join(.,wspomnienia,by = "id")
#słowa literackie w polu 245
rekordy_slowa <- sqldf("select *
from bn_ks a
where LOWER(a.X245) like ('%'||'pisar'||'%')
or LOWER(a.X245) like ('%'||'literat'||'%')
or LOWER(a.X245) like ('%'||'literac'||'%')
or LOWER(a.X245) like ('%'||'teatr'||'%')
or LOWER(a.X245) like ('%'||'film'||'%')
or LOWER(a.X245) like ('%'||'dramat'||'%')
or LOWER(a.X245) like ('%'||'interpretacj'||'%')") %>%
select(id) %>%
mutate(slowa_literackie = "tak") %>%
unique()
bn_ks <- bn_ks %>%
full_join(.,rekordy_slowa,by = "id")
bn_ok <- bn_ks %>%
filter(!((is.na(osoba_bn_autor)&is.na(osoba_bn_temat))&dziedzina_PBL=="bez_ukd_PBL"&is.na(bez_ukd_ale_PBL)&is.na(czy_wspomnienia_reportaz)&is.na(slowa_literackie)&is.na(czy_biblia)))
#interpretacje nieliterackie
zle_interpretacje <- bn_ok %>%
filter(grepl("interpretacj",X245,ignore.case = TRUE)|grepl("interpretacj",X650,ignore.case = TRUE)|grepl("interpretacj",X245,ignore.case = TRUE)) %>%
filter(grepl("\\$a336|\\$a342|\\$a32|\\$a551|\\$a616|\\$a159\\.961",X080)|grepl("prawn|handl|handel|kodeks|prac|ustaw|administrac|spółka|spółek|prawa|podatk",X655,ignore.case = TRUE)|grepl("prawn|handl|handel|kodeks|prac|ustaw|administrac|spółka|spółek|prawa|podatk",X650,ignore.case = TRUE)|grepl("prawn|handl|handel|kodeks|ustaw|administrac|spółka|spółek|prawa|podatk",X245,ignore.case = TRUE))
bn_ok <- bn_ok %>%
filter(id %notin% zle_interpretacje$id)
#usuwanie zdublowanych książek
#020
marc_field_020 <- bn_ok %>%
select(id,X020)%>%
filter(X020!="") %>%
mutate(X020=str_replace_all(X020,"(^|\\|)","~\\1")) %>%
cSplit(.,"X020",sep = "~",direction = "long") %>%
filter(X020!="") %>%
mutate(X020=str_remove_all(X020,"^\\|")) %>%
mutate(indicator = str_replace_all(X020,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(bn_ok$X020,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_020)[1]))
colnames(empty_table) <-subfield_list
marc_field_020<-cbind(marc_field_020,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_020$X020 <- str_replace(marc_field_020$X020,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_020[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_020$X020),str_replace_all(gsub(string,"\\3",marc_field_020$X020),"\\${2}.", "~"),NA)
}
marc_field_020 <- marc_field_020 %>%
select(id,isbn=`$a`)
distance1 <- bn_ok %>%
filter(!grepl("\\$n",X245)) %>%
left_join(.,marc_field_020,by="id") %>%
mutate(porownanie = paste(isbn,substr(str_to_lower(str_replace_all(X245, "\\W", "")),4,14),str_extract(X300,"(?<=\\$a)(.*?)(?=,| )"),sep = "|"))
count <- as.data.frame(table(distance1$porownanie))
distance1 <- merge(distance1,count,by.x = "porownanie",by.y = "Var1",all.x = TRUE) %>%
select(porownanie,Freq,2:155) %>%
arrange(-Freq,porownanie) %>%
select(porownanie,Freq,id) %>%
cSplit(.,"porownanie",sep = "|",direction = "wide") %>%
arrange(porownanie_2,porownanie_3,porownanie_1,-Freq,id)
count <- as.data.frame(table(distance1$porownanie_2,distance1$porownanie_3)) %>%
filter(Freq>0)
distance1 <- distance1 %>%
left_join(.,count,by=c("porownanie_2"="Var1","porownanie_3"="Var2")) %>%
arrange(porownanie_2,porownanie_3,-Freq.y,porownanie_1,-Freq.y,id) %>%
group_by_at(vars(4:6)) %>%
fill(porownanie_1) %>%
ungroup() %>%
unique() %>%
select(-Freq.y) %>%
rename(Freq = Freq.x)
#poszukanie dystansu Levenshteina == 1 przy takim samym ISBN
distance2 <- distance1 %>%
filter(!is.na(porownanie_1)) %>%
group_by(porownanie_1) %>%
mutate(Freq = paste(Freq,collapse = "|"),
id = paste(id,collapse = "|"),
porownanie_2 = paste(porownanie_2,collapse = "|"),
porownanie_3 = paste(porownanie_3,collapse = "|")) %>%
ungroup() %>%
unique() %>%
mutate(ile = str_count(porownanie_2,"\\|")+1) %>%
arrange(-ile) %>%
mutate(id_grupy = 1:lengths(.)) %>%
filter(ile>1) %>%
cSplit(.,c("Freq","id","porownanie_2","porownanie_3"),sep = "|",direction = "long") %>%
unique() %>%
filter(!is.na(id))
permutations <- data.frame(stringsAsFactors = FALSE)
x <- 1:max(distance2$id_grupy)
for (i in x) {
progress(match(i,x), max.value = length(x))
distance3 <- as.vector(unlist(distance2 %>% filter(id_grupy==i) %>% select(porownanie_2)))
iteration <- as.data.frame(permutations(distance3,2)) %>%
mutate(id_grupy = i)
y <- 1:length(iteration$V1)
for (j in y) {
progress(match(j,y), max.value = length(y))
iteration$distance[j] <- adist(iteration$V1[j],iteration$V2[j])
}
permutations <- rbind(permutations,iteration)
}
permutations <- permutations %>%
filter(distance<=1)
distance2 <- distance2 %>%
filter(id_grupy %in% permutations$id_grupy) %>%
select(id,id_grupy)
#połączyć distance2 z distance1, żeby wydobyć pełną listę zdublowanych książek
duble_ksiazek <- distance1 %>%
unite("porownanie", porownanie_1:porownanie_3, sep = "|") %>%
filter(Freq>1) %>%
full_join(.,distance2,by="id")
duble_ksiazek$same <- cumsum(!duplicated(duble_ksiazek$porownanie))
duble_ksiazek <- duble_ksiazek %>%
arrange(id_grupy,same) %>%
mutate(id_grupy_dubli = ifelse(!is.na(id_grupy),as.character(id_grupy),paste("x",same,sep = ""))) %>%
select(id,id_grupy_dubli) %>%
arrange(id_grupy_dubli)
duble_ksiazek$id_grupy_dubli <- cumsum(!duplicated(duble_ksiazek$id_grupy_dubli))
#uzupełnienie całego zbioru o informację o dublu, wydobycie dubli do osobnego pliku i usuniecie ich z głównego pliku z rekordami bn; wskazanie listy interesujących pól
bn_ok <- bn_ok %>%
left_join(.,duble_ksiazek,by="id") %>%
select(id, X008, X009, X015, X041, X044, X080, X100, X245, X246, X250, X260, X300, X380, X386, X490, X500, X501, X546, X600, X650, X655, X700, X710, X800, X830, rok, BN_URL, osoba_bn_autor, osoba_bn_temat, dziedzina_PBL, bez_ukd_ale_PBL, czy_wspomnienia_reportaz, slowa_literackie, czy_biblia, id_grupy_dubli)
duble_ksiazek <- bn_ok %>%
filter(!is.na(id_grupy_dubli)) %>%
arrange(id_grupy_dubli)
bn_ok <- bn_ok %>%
filter(is.na(id_grupy_dubli))
#wpisanie w zdublowane rekordy jak największej ilości danych (suma wszystkich dubli)
duble_ksiazek <- duble_ksiazek %>%
arrange(id_grupy_dubli,-nchar(X015))
duble_ksiazek[is.na(duble_ksiazek)] <- ""
duble_naprawione <- data.frame(stringsAsFactors = FALSE)
x <- 1:max(duble_ksiazek$id_grupy_dubli)
y <- c(4:27,29:34)
for (i in x) {
progress(match(i,x), max.value = length(x))
iteration <- duble_ksiazek %>%
filter(id_grupy_dubli==i)
for (j in y) {
if (j==30) {
iteration[,j] <- iteration[,j][nchar(iteration[,j])==min(nchar(iteration[,j]))][1]
} else {
iteration[,j] <- iteration[,j][nchar(iteration[,j])==max(nchar(iteration[,j]))][1]
}
}
duble_naprawione <- rbind(duble_naprawione,iteration)
}
#pozostawienie pojedynczych wierszy dla książek
duble_naprawione <- duble_naprawione[!duplicated(duble_naprawione$id_grupy_dubli),]
duble_naprawione <- duble_naprawione %>%
mutate(osoba_bn_autor = ifelse(osoba_bn_autor!="",as.character(osoba_bn_autor),NA),
osoba_bn_temat = ifelse(osoba_bn_temat!="",as.character(osoba_bn_temat),NA),
dziedzina_PBL = ifelse(dziedzina_PBL!="",as.character(dziedzina_PBL),NA),
bez_ukd_ale_PBL = ifelse(bez_ukd_ale_PBL!="",as.character(bez_ukd_ale_PBL),NA),
czy_wspomnienia_reportaz = ifelse(czy_wspomnienia_reportaz!="",as.character(czy_wspomnienia_reportaz),NA),
slowa_literackie = ifelse(slowa_literackie!="",as.character(slowa_literackie),NA),)
#połączenie unikatowych książek z dubli z całym zbiorem
bn_ok <- bn_ok %>%
bind_rows(.,duble_naprawione) %>%
select(-id_grupy_dubli)
#usunięcie zagranicznych zapisów, które nie są polonikami
#na podstawie braku wystąpień frazy "pol" w polach MARC
nie_poloniki <- bn_ok %>%
filter(if (X501=="") !grepl("pl",substr(X008,16,18))) %>%
filter(!grepl("pol",substr(X008,36,38))) %>%
filter(!grepl("pol",X041)) %>%
filter(!grepl("pl",X044)) %>%
filter(!grepl("pol",X500,ignore.case = TRUE)) %>%
filter(!grepl("pol",X501,ignore.case = TRUE)) %>%
filter(!grepl("pol",X546,ignore.case = TRUE)) %>%
select(id) %>%
mutate(czy_polonik = "nie") %>%
unique()
bn_ok <- bn_ok %>%
full_join(.,nie_poloniki,by = "id") %>%
select(id, X008, X009, X041, X044, X080, X100, X245, X246, X250, X260, X300, X380, X386, X490, X500, X501, X500, X546, X600, X650, X655, X700, X710, X800, X830, rok, BN_URL, osoba_bn_autor, osoba_bn_temat, dziedzina_PBL, bez_ukd_ale_PBL, czy_wspomnienia_reportaz, slowa_literackie, czy_polonik, czy_biblia) %>%
unique()
#wskazanie niepoloników i usunięcie ze zbioru
nie_poloniki <- bn_ok %>%
filter(czy_polonik=="nie") %>%
filter(is.na(osoba_bn_autor)|is.na(osoba_bn_temat)|!(osoba_bn_autor %in% c("148|Hasła osobowe (literatura polska)","430|Hasła osobowe (Ludzie teatru i filmu)"))|!(osoba_bn_temat %in% c("148|Hasła osobowe (literatura polska)","430|Hasła osobowe (Ludzie teatru i filmu)")))
bn_ok <- sqldf("select *
from bn_ok a
where a.id not in (select b.id from nie_poloniki b)") %>%
select(-czy_polonik)
#usunięcie książek zabawek, do kolorowania, dla małych dzieci, z naklejkami, które nie mają żadnego deskryptora gatunkowego
ks_zabawki <- bn_ok %>%
filter((str_count(X655,"\\$a")==1&grepl("Książka zabawka|Książki dla małych dzieci|Książka do kolorowania|Książka z naklejkami|Książki dla przedszkolaków|Wydawnictwa dla dzieci",X655))|str_count(X655,"\\$a")==2&grepl("Książka obrazkowa",X655)&grepl("Książki dla małych dzieci",X655)|str_count(X655,"\\$a")==2&grepl("Książka do kolorowania",X655)&grepl("Publikacje dla dzieci",X655)|str_count(X655,"\\$a")==2&grepl("Książki zabawki",X655)&grepl("Wycinanki",X655)|str_count(X655,"\\$a")==2&grepl("Książki dla małych dzieci",X655)&grepl("Publikacje dla dzieci",X655)|str_count(X655,"\\$a")==2&grepl("Książka zabawka",X655)&grepl("Książki dla małych dzieci",X655)|str_count(X655,"\\$a")==2&grepl("Książka zabawka",X655)&grepl("Publikacje dla dzieci",X655))
bn_ok <- sqldf("select *
from bn_ok a
where a.id not in (select b.id from ks_zabawki b)")
# usunięcie książek dotyczących glottodydaktyki
ks_glottodydaktyka <- bn_ok %>%
filter(str_detect(tolower(X490), "język polski dla cudzoziemców|czytaj po polsku : materiały pomocnicze do nauki języka polskiego jako obcego|testy ogólne i specjalistyczne z języka polskiego jako obcego|kultura i język polski dla cudzoziemców|czytaj po polsku") | str_detect(tolower(X830), "język polski dla cudzoziemców|kultura i język polski dla cudzoziemców|czytaj po polsku"))
bn_ok <- sqldf("select *
from bn_ok a
where a.id not in (select b.id from ks_glottodydaktyka b)")
chunk3 <- bn_ok
bn_ok <- chunk3
Komunikaty ostrzegawcze:
1: Unknown or uninitialised column: 'drugi_autor'.
2: Unknown or uninitialised column: 'drugi_autor'.
3: Unknown or uninitialised column: 'drugi_autor'.
4: Unknown or uninitialised column: 'drugi_autor'.
5: Unknown or uninitialised column: 'drugi_autor'.
6: Unknown or uninitialised column: 'drugi_autor'.
#pobranie starych list książek z importu
#aktualizacja - uzupełnij ostatni brakujący zaimportowany rocznik
listy_2011 <- sheets_read(ss = "1s22ClRxlrPHaAXi_n_JJH3mX6vKYzKjsKbpJpQztx_8", sheet = "lista_ksiazek")
Reading from 'ks_BN_2011_listy_pracownik昼㸳w'
Range "'lista_ksiazek'"
New names:
* link -> link...4
* link -> link...5
listy_2010 <- sheets_read(ss = "1Vjeg0JsYI-8v9B-x_yyujIhmw7UR7Lk7poexrHNdVzM", sheet = "lista_ksiazek")
Reading from 'ks_BN_2010_listy_pracownik昼㸳w'
Range "'lista_ksiazek'"
New names:
* `` -> ...4
listy_2009 <- sheets_read(ss = "1Gc4gQSm9b4NDTQysiauzW9Jac6yP0oNuFbB8utO4kS4", sheet = "lista_ksiazek")
Reading from 'ks_BN_2009_listy_pracownik昼㸳w'
Range "'lista_ksiazek'"
pojawi戼㸳y si攼㹡 warto㤼㹣ci NA na skutek przekszta戼㸳ceniaNew names:
* `` -> ...4
listy_2005 <- sheets_read(ss = "1HkWkX61sQWktSXf0v0uPV8j2DwuTocesyCJuKTdisIU", sheet = "lista_ksiazek")
Reading from 'ks_BN_2005_listy_pracownik昼㸳w'
Range "'lista_ksiazek'"
New names:
* link -> link...4
* link -> link...5
listy_2006 <- sheets_read(ss = "1zeMx_Idsum8JmlM6G7Eufx9LxloHoAHv8V-My71VZf4", sheet = "lista_ksiazek")
Reading from 'ks_BN_2006_listy_pracownik昼㸳w'
Range "'lista_ksiazek'"
New names:
* link -> link...4
* link -> link...5
listy_2007 <- sheets_read(ss = "19iL7YoD8ug-rLnpzS6FD46aS2J1BRf4qL5VxllywCGE", sheet = "lista_ksiazek")
Reading from 'ks_BN_2007_listy_pracownik昼㸳w'
Range "'lista_ksiazek'"
New names:
* link -> link...4
* link -> link...5
listy_2008 <- sheets_read(ss = "1RshTeWdXBE7OzOEfoGpL9Ljb_GXDlGDePNjV1HKmuOo", sheet = "lista_ksiazek")
Reading from 'ks_BN_2008_listy_pracownik昼㸳w'
Range "'lista_ksiazek'"
New names:
* link -> link...4
* link -> link...5
listy_2004 <- sheets_read(ss = "1RmDia97s4B8F74sS7Wbpnv_A9zMfr4xTvcD9leukAfM", sheet = "lista_książek") %>%
mutate(typ_ksiazki = NA, link = NA, link_1 = NA, status = NA, blad_w_imporcie_tytulu = NA) %>%
select(pracownik,ZA_ZAPIS_ID,typ_ksiazki, link, link_1, rok, status, blad_w_imporcie_tytulu, X100, X245, X650, X655, X246, X250, X260, X300, X380, X490, X500, X501, X546, X600, X700, X041, X080)
Reading from 'ks_BN_2004_listy_pracownik昼㸳w'
Range "'lista_ksi戼㸹戼㹦ek'"
New names:
* `` -> ...26
* `` -> ...27
* `` -> ...29
#ujednolicenie 2004 do wzoru późniejszych rocznikóW
do2004 <- RJDBC::dbGetQuery(PBL,
"select z.za_zapis_id, z.za_status_imp
from pbl_zapisy z
where z.za_uwagi like '%import%02%'")
listy_2004 <- merge(listy_2004,do2004,by = "ZA_ZAPIS_ID",all.x = TRUE) %>%
mutate(status = ZA_STATUS_IMP) %>%
select(-ZA_STATUS_IMP) %>%
select(pracownik,ZA_ZAPIS_ID,typ_ksiazki, link, link_1, rok, status, blad_w_imporcie_tytulu, X100, X245, X650, X655, X246, X250, X260, X300, X380, X490, X500, X501, X546, X600, X700, X041, X080)
#zapewnienie tych samych nazw kolumn
#aktualizacja - wprowadź wiersz dla ostatniego zaimportowanego rocznika
colnames(listy_2011) <- names(listy_2004)
colnames(listy_2010) <- names(listy_2004)
colnames(listy_2009) <- names(listy_2004)
colnames(listy_2005) <- names(listy_2004)
colnames(listy_2006) <- names(listy_2004)
colnames(listy_2007) <- names(listy_2004)
colnames(listy_2008) <- names(listy_2004)
listy_2004 <- listy_2004 %>%
mutate(X655 = str_remove(str_replace_all(X655,"(\\$a)","|\\1"),"^\\|"),
X650 = str_remove(str_replace_all(X650,"(\\$a)","|\\1"),"^\\|"))
#wyznaczenie listy 650 i 655 do automatycznego INO na podstawie wcześniejszych importów - usunięte są tylko te deskryptory, które nie mają związku z literaturą podmiotową
zapisy <- RJDBC::dbGetQuery(PBL,
"select z.za_zapis_id, z.za_status_imp, z.za_uwagi, z.za_adnotacje
from pbl_zapisy z
where z.za_uwagi like '%import%'") %>%
mutate(pracownik_pbl = str_extract(ZA_UWAGI, "(?<=akceptuje:)([A-Z]*)")) %>%
select(ZA_ZAPIS_ID,pracownik_pbl,ZA_STATUS_IMP,ZA_ADNOTACJE)
#aktualizacja - dodaj do skryptu listę z ostatnim brakującym zaimportowanym rocznikiem
do_importu_NIE <- rbind(listy_2004,listy_2005,listy_2006,listy_2007,listy_2008, listy_2009, listy_2010, listy_2011) %>%
full_join(.,zapisy,by = "ZA_ZAPIS_ID") %>%
select(X650,X655,ZA_STATUS_IMP,ZA_ADNOTACJE) %>%
mutate(X650 = str_remove_all(X650,"\\\\7"),
X655 = str_remove_all(X655,"\\\\7"),
joint = paste(X650,X655,sep = "~")) %>%
select(ZA_STATUS_IMP,joint,ZA_ADNOTACJE) %>%
group_by(joint) %>%
mutate(grupa = paste(ZA_STATUS_IMP,collapse = ","),
ZA_ADNOTACJE = paste(ZA_ADNOTACJE,collapse = ",")) %>%
ungroup() %>%
select(joint, grupa,ZA_ADNOTACJE) %>%
unique() %>%
filter(!grepl("rozpisana|rozpisać|rozpisania",ZA_ADNOTACJE)) %>%
mutate(ile = str_count(grupa,",")+1) %>%
filter(grepl("INO",grupa)) %>%
filter(!grepl("IOK|IMP|IPN|IPC",grupa)) %>%
mutate(czy = str_detect(joint,"\\$y[\\d-]+ w\\.")) %>%
filter(czy==FALSE) %>%
select(joint) %>%
mutate(joint = str_remove_all(str_replace_all(joint,"(\\$a)","\\\\#7\\1"),"#")) %>%
mutate(do_wyrzucenia_na_podstawie_INO = "tak")
bn_ok <- bn_ok %>%
mutate(X650 = ifelse(X650=="",NA,as.character(X650)),
X655 = ifelse(X655=="",NA,as.character(X655)),
joint = paste(X650,X655,sep = "~")) %>%
left_join(.,do_importu_NIE,by = "joint") %>%
mutate(X650 = ifelse(is.na(X650),"",as.character(X650)),
X655 = ifelse(is.na(X655),"",as.character(X655)))
do_importu_NIE <- bn_ok %>%
filter(is.na(osoba_bn_autor)&is.na(osoba_bn_temat)&is.na(slowa_literackie)&do_wyrzucenia_na_podstawie_INO=="tak") %>%
filter(!grepl("literat|literac|pamiętnik|pisar",X655,ignore.case = TRUE))
bn_ok <- sqldf("select *
from bn_ok a
where a.id not in (select b.id from do_importu_NIE b)") %>%
select(-joint,-do_wyrzucenia_na_podstawie_INO)
#usunięcie na podstawie tabel KP
out <- sheets_read(ss = "1lO_ZtwyBDePGqXkgWyk_WmGeQBaAQBvEUjNnctrw-vg") %>%
filter(wchodzi_do_pbl == "nie")
Reading from 'X650 dla X655 Wydawnictwa popularne'
KP_out <- bn_ok %>%
filter(grepl("Wydawnictwa popularne",X655)) %>%
unique() %>%
full_join(.,out,by = "X650") %>%
filter(wchodzi_do_pbl=="nie") %>%
filter(!is.na(X655)) %>%
select(id)
bn_ok <- sqldf("select *
from bn_ok a
where a.id not in (select b.id from KP_out b)")
#czy próbować wyrzucać po UKD, które dostawało tylko INO?
#aktualizacja - dodaj do skryptu listę z ostatnim brakującym zaimportowanym rocznikiem
do_importu_NIE2 <- rbind(listy_2004,listy_2005,listy_2006,listy_2007,listy_2008, listy_2009, listy_2010, listy_2011) %>%
full_join(.,zapisy,by = "ZA_ZAPIS_ID") %>%
select(X080,ZA_STATUS_IMP) %>%
mutate(X080 = str_remove_all(X080,"\\\\")) %>%
select(ZA_STATUS_IMP,X080) %>%
group_by(X080) %>%
mutate(grupa = paste(ZA_STATUS_IMP,collapse = ",")) %>%
ungroup() %>%
select(X080, grupa) %>%
unique() %>%
mutate(ile = str_count(grupa,",")+1) %>%
filter(grepl("INO",grupa)) %>%
filter(!grepl("IOK|IMP|IPN|IPC",grupa)) %>%
#tu się musi KP wypowiedzieć, czy jak było 2xNIE to wystarczy, żeby wywalać
# filter(ile > 1) %>%
select(X080) %>%
mutate(X080 = paste("\\",str_remove_all(str_replace_all(X080,"(\\$a)","\\\\#\\1"),"#"),sep = "")) %>%
mutate(do_wyrzucenia_na_podstawie_INO = "tak")
#na podstawie UKD też wyrzucić - decyzja KP
bn_ok <- bn_ok %>%
full_join(.,do_importu_NIE2,by = "X080") %>%
filter(!is.na(id))
do_importu_NIE2 <- bn_ok %>%
filter(is.na(osoba_bn_autor)&is.na(osoba_bn_temat)&is.na(slowa_literackie)&do_wyrzucenia_na_podstawie_INO=="tak")
bn_ok <- sqldf("select *
from bn_ok a
where a.id not in (select b.id from do_importu_NIE2 b)") %>%
select(-do_wyrzucenia_na_podstawie_INO)
#reszta rekordów, które nie będą zaimportowane
reszta <- sqldf("select *
from bn_ks a
where a.id not in
(select b.id
from bn_ok b)")
chunk4 <- bn_ok
bn_ok <- chunk4
stare_rodzajowanie <- bn_ok %>%
mutate(czy_ma_ukd = ifelse(X080=="","nie","tak"),
position_dash = ifelse(grepl("(\\\\\\\\\\$a|:)(821\\.)",X080),str_locate(X080,"\\-")[,1], NA),
position_dash = ifelse(is.na(position_dash),"",as.integer(position_dash)),
position_091 = str_locate(X080,"\\(091\\)")[,1],
position_091 = ifelse(is.na(position_091),"",as.integer(position_091)),
rodzaj_ksiazki = ifelse(grepl("Antologi",X655),"antologia",
ifelse(position_091!=""&position_dash!="",
ifelse(as.integer(position_091)<as.integer(position_dash), "przedmiotowa", "podmiotowa"),
ifelse(position_dash!="","podmiotowa","przedmiotowa"))),
rodzaj_ksiazki = ifelse(czy_ma_ukd=="nie","",as.character(rodzaj_ksiazki)))
gatunki_podmiotowe <- stare_rodzajowanie %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
select(X655) %>%
unique() %>%
cSplit(.,"X655",sep = "|",direction = "long") %>%
unique() %>%
filter(str_detect(X655,"\\$y[\\d-]+ w\\."))
gatunki_podmiotowe <- str_replace_all(str_replace_all(paste(gatunki_podmiotowe$X655,collapse = "|"),"(.{2})(\\$a)","\\2"),"\\$","\\\\$")
stare_rodzajowanie$czy_podmiotowy <- grepl(gatunki_podmiotowe,stare_rodzajowanie$X655)|grepl(gatunki_podmiotowe,stare_rodzajowanie$X650)
stare_rodzajowanie <- stare_rodzajowanie %>%
mutate(rodzaj_ksiazki = ifelse(str_count(X245, " / ")+1>2,"antologia",
ifelse(str_count(X245, " / ")+1==2,"współwydanie",
ifelse(rodzaj_ksiazki==""&czy_podmiotowy==TRUE&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",
ifelse(X100!=""&grepl("aPamiętnik|aLiteratura podróżnicza",X655)&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",
ifelse(X100!=""&grepl("aReportaż",X655)&grepl("\\$y",X655)&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",
ifelse(X100!=""&(X655=="\\7$aReportaż polski$2DBN"|X655=="\\7$aReportaż$2DBN")&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",
ifelse(rodzaj_ksiazki==""&czy_podmiotowy==FALSE,"przedmiotowa",as.character(rodzaj_ksiazki)))))))),
rodzaj_ksiazki = ifelse(rodzaj_ksiazki=="","przedmiotowa",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(grepl("Lektury Wszech Czasów : streszczenie, analiza, interpretacja|Lektury Wszech Czasów - Literat|Biblioteczka Opracowań",X490)|grepl("Lektury Wszech Czasów : streszczenie, analiza, interpretacja|Lektury Wszech Czasów - Literat|Biblioteczka Opracowań",X830),"przedmiotowa",as.character(rodzaj_ksiazki)),
ilu_tworcow = str_count(X100,"\\$a"),
rodzaj_ksiazki = ifelse(ilu_tworcow>4&rodzaj_ksiazki=="podmiotowa","antologia",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(grepl("Legendy",X655),"antologia",as.character(rodzaj_ksiazki))) %>%
filter(grepl("katalog wystawy",X655,ignore.case = TRUE)&rodzaj_ksiazki=="przedmiotowa") %>%
select(id)
##właściwe rodzajowanie z uwaględnieniem jednego elementu ze starego rodzajowania
bn_ok <- bn_ok %>%
mutate(czy_ma_ukd = ifelse(X080=="","nie","tak"),
position_dash = ifelse(grepl("(\\\\\\\\\\$a|:)(821\\.)",X080),str_locate(str_replace(X080,"(.*?)(\\$a821\\.)(.*?$)","\\2\\3"),"\\-")[,1]+nchar(str_replace(X080,"(.*?)(\\$a821\\.)(.*?$)","\\1")), NA),
position_dash = ifelse(is.na(position_dash),"",as.integer(position_dash)),
position_091 = str_locate(X080,"\\(091\\)")[,1],
position_091 = ifelse(is.na(position_091),"",as.integer(position_091)),
rodzaj_ksiazki = ifelse(grepl("antologi|Przysłowia [\\S]+\\$2|Cytaty\\$2",X655,ignore.case = TRUE),"antologia",
ifelse(position_091!=""&position_dash!="",
ifelse(as.integer(position_091)<as.integer(position_dash), "przedmiotowa", "podmiotowa"),
ifelse(position_dash!="","podmiotowa","przedmiotowa"))),
rodzaj_ksiazki = ifelse(czy_ma_ukd=="nie","",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(grepl("82-93",X080)&rodzaj_ksiazki!="antologia","podmiotowa",as.character(rodzaj_ksiazki)))
rekordy_podmiotowe_stare <- dbGetQuery(PBL,
"select z.za_zapis_id
from pbl_zapisy z
join IBL_OWNER.pbl_rodzaje_zapisow rz on rz.rz_rodzaj_id=z.za_rz_rodzaj1_id
where rz.rz_rodzaj_id=1
and z.za_uwagi like '%import%'")
#aktualizacja - dodaj do skryptu listę z ostatnim brakującym zaimportowanym rocznikiem
gatunki_poprzednie_imp <- rbind(listy_2004,listy_2005,listy_2006,listy_2007,listy_2008, listy_2009, listy_2010, listy_2011) %>%
filter(ZA_ZAPIS_ID %in% rekordy_podmiotowe_stare$ZA_ZAPIS_ID) %>%
mutate(X655 = ifelse(rok==2004,str_remove_all(str_replace_all(X655,"(\\$a)","\\\\#7\\1"),"#"),as.character(X655))) %>%
select(X655) %>%
unique()
gatunki_podmiotowe <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
select(X655) %>%
bind_rows(.,gatunki_poprzednie_imp) %>%
unique() %>%
cSplit(.,"X655",sep = "|",direction = "long") %>%
unique() %>%
filter(!grepl("xhistoria|xtematyka|xbiografia",X655)) %>%
filter(str_detect(X655,"\\$y[\\d-]+ w\\."),
grepl("( \\S+)(\\$y)(.*?$)", X655)) %>%
#mutate(X655 = str_replace(X655, "(?<= )(\\S+)(\\$y)(.*?$)", "[\\\\S]+\\2")) %>%
mutate(X655 = str_replace(X655, "(?<= )(\\S+)(\\$y)(.*?$)", ".+\\2")) %>%
unique()
gatunki_podmiotowe <- str_replace_all(str_replace_all(str_replace_all(paste(gatunki_podmiotowe$X655,collapse = "|"),"(.{2})(\\$a)","\\2"),"\\$","\\\\$"), "\\(", "\\\\\\(")
bn_ok$czy_podmiotowy <- grepl(gatunki_podmiotowe,bn_ok$X655)|grepl(gatunki_podmiotowe,bn_ok$X650)
bn_ok <- bn_ok %>%
mutate(rodzaj_ksiazki = ifelse(str_count(X245, " \\/ ")+1>2,"antologia",
ifelse(str_count(X245, " \\/ \\[{0,1}[A-ZAÁÀÂÃÄĂĀÅĄÆEÉÈÊËĚĒĖĘIÍÌÎÏĪĮIOÓÒÔÕÖŐØŒUÚÙÛÜŰŪůYÝCĆČçDĎĐĐGĢĞKĶLŁĻNŃÑŇŅŊRŘSŚŠŞSßTŤŦÞŢ8ZŻŹŽ]")+1==2,"współwydanie",
ifelse(rodzaj_ksiazki==""&czy_podmiotowy==TRUE&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",
ifelse(X100!=""&grepl("aPamiętnik|aLiteratura podróżnicza",X655)&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",
ifelse(X100!=""&grepl("aReportaż",X655)&grepl("\\$y",X655)&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",
ifelse(X100!=""&(X655=="\\7$aReportaż polski$2DBN"|X655=="\\7$aReportaż$2DBN")&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",
ifelse(rodzaj_ksiazki==""&czy_podmiotowy==FALSE,"przedmiotowa",as.character(rodzaj_ksiazki)))))))),
rodzaj_ksiazki = ifelse(rodzaj_ksiazki=="","przedmiotowa",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(grepl("Lektury Wszech Czasów \\: streszczenie, analiza, interpretacja|Lektury Wszech Czasów - Literat|Biblioteczka Opracowań",X490)|grepl("Lektury Wszech Czasów \\: streszczenie, analiza, interpretacja|Lektury Wszech Czasów - Literat|Biblioteczka Opracowań",X830),"przedmiotowa",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(grepl("aLektura z Opracowaniem - Zielona Sowa|aLektura \\(Greg\\)|aLektura Dobrze Opracowana|aLektura z Opracowaniem - Ibis",X830),"podmiotowa",as.character(rodzaj_ksiazki)),
ilu_tworcow = str_count(X100,"\\$a"),
rodzaj_ksiazki = ifelse(ilu_tworcow>4&rodzaj_ksiazki=="podmiotowa","antologia",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(grepl("Legendy|\\$vantologi",X655),"antologia",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(str_count(X100, "\\|")==0&X100!=""&rodzaj_ksiazki=="antologia"&grepl("Legendy i podania|Antologia",X655),"podmiotowa",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(X100==""&str_count(X700,"\\$t")==3&grepl("Harlequin",X260),"antologia",as.character(rodzaj_ksiazki))) %>%
select(1:34,rodzaj_ksiazki)
# przypisania do podmiotowej na podstawie smierci przed 1700
marc_field_100 <- bn_ok %>%
filter(!is.na(osoba_bn_autor)) %>%
select(id,X100)%>%
filter(!grepl("\\|", X100)) %>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(bn_ok$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
marc_field_100 <- marc_field_100 %>%
filter(!is.na(`$d`) & str_extract(`$d`, "\\d+(?!.*\\d+)") < 1700)
bn_ok <- bn_ok %>%
mutate(rodzaj_ksiazki = ifelse(id %in% marc_field_100$id, "podmiotowa", as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(id %in% stare_rodzajowanie$id, "przedmiotowa",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(X080=="\\\\$a82-1/-9(0.054)"&rodzaj_ksiazki=="przedmiotowa"&!grepl("xhistoria|xtematyka|xbiografia",X650)&!grepl("xhistoria|xtematyka|xbiografia",X655),"podmiotowa",as.character(rodzaj_ksiazki)),
rodzaj_ksiazki = ifelse(rodzaj_ksiazki=="podmiotowa"&grepl("aut\\.",X245)&grepl("et al\\.",X245),"antologia",as.character(rodzaj_ksiazki)))
chunk5 <- bn_ok
bn_ok <- chunk5
IOK_podm <- bn_ok %>%
filter(!grepl("\\$t",X700)) %>%
mutate(ile_gatunkow = ifelse(rodzaj_ksiazki=="podmiotowa",str_count(X655,"\\$a"),"nie"),
tylko_podmiotowe = ifelse(str_count(X655,"\\$a")>0&str_count(X655,"\\$a")==str_count(X655,"\\$y")&str_count(X655,"\\$y")!=str_count(X655,"\\$x"),"tak","nie")) %>%
filter(str_count(X100,"\\$a")==1) %>%
filter(!grepl("pseud|nazwa",X500,ignore.case = TRUE)&X501==""&(tylko_podmiotowe=="tak"|ile_gatunkow=="1")&X100!="")
#zestawienie 100 i 245
#100
marc_field_100 <- IOK_podm %>%
select(id,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(IOK_podm$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
marc_field_100 <- marc_field_100 %>%
select(id,`$a`) %>%
mutate(bn_nazwisko = ifelse(str_detect(`$a`,","),str_replace(`$a`,"^(.*?)(, )(.*?$)","\\1"),as.character(`$a`)),
bn_imie = ifelse(str_detect(`$a`,","),str_replace(`$a`,"^(.*?)(, )(.*?$)","\\3"),"")) %>%
select(id,bn_nazwisko,bn_imie)
IOK_podm <- IOK_podm %>%
full_join(.,marc_field_100,by = "id")
x <- 1:length(IOK_podm$id)
for (i in x) {
IOK_podm$czy_nazwisko[i] <- grepl(IOK_podm$bn_nazwisko[i],IOK_podm$X245[i])
IOK_podm$czy_imie[i] <- grepl(IOK_podm$bn_imie[i],IOK_podm$X245[i])
}
#usunięcie tych, które nie mają tytułów oryginalnych
IOK_podm <- IOK_podm %>%
filter(czy_nazwisko==1&czy_imie==1&!grepl("et al\\.",X245)) %>%
select(-bn_nazwisko,-bn_imie,-czy_nazwisko,-czy_imie) %>%
unique() %>%
mutate(jezyk = str_extract(X041,("(?<=\\$h)(...)"))) %>%
mutate(czy_tytul_obcy = ifelse(is.na(jezyk),"nie dotyczy",
ifelse(!grepl("pol",jezyk),
ifelse(X246!="","ok",
ifelse(grepl("Tyt[,\\.] oryg",X501)|grepl("Tyt[,\\.] oryg",X500),"ok","problem")),"nie dotyczy"))) %>%
filter(czy_tytul_obcy!="problem") %>%
select(id) %>%
mutate(automatyczna_podmiotowa = "tak")
###tutaj kończą się automatyczne podmiotowe
bn_ok <- bn_ok %>%
full_join(.,IOK_podm,by = "id") %>%
mutate(czy_automatycznie = ifelse(!is.na(automatyczna_podmiotowa),"podmiotowa","nie")) %>%
select(-automatyczna_podmiotowa) %>%
mutate(czy_automatycznie = ifelse(czy_automatycznie=="podmiotowa"&rodzaj_ksiazki!="podmiotowa","nie",as.character(czy_automatycznie)))
###czy i jak automatyzować przedmiotową?
#write.csv2(bn_ok, "C:/Users/Cezary/Desktop/bn_ok_2009.csv", row.names = F, na = '', fileEncoding = 'UTF-8')
chunk6 <- bn_ok
bn_ok <- chunk6
#propozycja1
#na później kierowane są wszystkie książki przedmiotowe, które mają bez_ukd_PBL lub ukd_pogranicze i nie są biblią oraz książki wydane poza Polską, które nie poszły do automatycznego importu oraz harlequiny, które nie poszły do automatycznego importu
na_pozniej <- bn_ok %>%
filter((if (X501=="") !grepl("pl",substr(X008,16,18))&!grepl("pol",substr(X008,36,38))&czy_automatycznie=="nie")|czy_automatycznie=="nie"&rodzaj_ksiazki=="przedmiotowa"&dziedzina_PBL %in% c("bez_ukd_PBL","ukd_pogranicze")&(czy_biblia!="tak"|is.na(czy_biblia))|grepl("arleq",X260,ignore.case = TRUE)&czy_automatycznie=="nie")
warunek posiada d戼㸳ugo㤼㹣攼㸶 > 1 i tylko pierwszy element b攼㹡dzie u戼㹦yty
#bezpiecznik
#propozycja2
#propozycja, by kierować na później wszystkie książki przedmiotowe z dziedziny "bez_ukd_PBL"
# na_pozniej <- bn_ok %>%
# filter(czy_automatycznie=="nie"&rodzaj_ksiazki=="przedmiotowa"&dziedzina_PBL=="bez_ukd_PBL"&(czy_biblia!="tak"|is.na(czy_biblia)))
# #propozycja3
# na_pozniej <- bn_ok %>%
# filter(czy_automatycznie=="nie"&rodzaj_ksiazki=="przedmiotowa"&dziedzina_PBL %in% c("bez_ukd_PBL","ukd_pogranicze")&(czy_biblia!="tak"|is.na(czy_biblia)))
#propozycja4
#stara operacja
# na_pozniej <- bn_ok %>%
# filter(czy_automatycznie=="nie"&rodzaj_ksiazki=="przedmiotowa"&dziedzina_PBL=="bez_ukd_PBL") %>%
# mutate(kategorie_literackie = ifelse(grepl("mitolog|baś|bajk|poezj|liryk|epik|dramat|literac|literat|pisar|wiersz|proz|powieś|opowiad|miniatur|aforyzm|esej|szkic|feliet|report|dzienni|wspomnie|autobiograf|kaza|rozmyśl|list|interpretacj",X650,ignore.case = TRUE)|grepl("mitolog|baś|bajk|poezj|liryk|epik|dramat|literac|literat|pisar|wiersz|proz|powieś|opowiad|miniatur|aforyzm|esej|szkic|feliet|report|dzienni|wspomnie|autobiograf|kaza|rozmyśl|list|interpretacj",X655, ignore.case = TRUE),"tak","nie")) %>%
# filter(kategorie_literackie=="nie") %>%
# mutate(lata = ifelse(grepl("\\d{2}-",X100),str_replace(X100,"(.*\\$d\\(.*?)(\\d{2,4})(\\?{0,1}-.*)","\\2"),NA),
# lata_temat = ifelse(grepl("\\d{2}-",X600),str_replace(X600,"(.*\\$d\\(.*?)(\\d{2,4})(\\?{0,1}-.*)","\\2"),NA)) %>%
# filter((is.na(lata)&is.na(lata_temat))|!(as.integer(lata)<1800)|!(as.integer(lata_temat)<1800))
write.csv2(na_pozniej, paste("C:/Users/",employee_name,"/Desktop/bn_",import_year,"_ks_na_pozniej.csv",sep = ""), row.names = F, na = '', fileEncoding = 'UTF-8')
bn_ok <- sqldf("select *
from bn_ok a
where a.id not in (select b.id from na_pozniej b)")
chunk7 <- bn_ok
Czy jest sens to robić?
###automatycznie działowanie przedmiotowej na podstawie dotychczasowych importów
#zapisy <- RJDBC::dbGetQuery(PBL,
# "select z.za_zapis_id, dz.dz_dzial_id, dz.dz_nazwa, z.za_status_imp, z.za_uwagi
# from pbl_zapisy z
# join pbl_dzialy dz on dz.dz_dzial_id=z.za_dz_dzial1_id
# where z.za_uwagi like '%import%'") %>%
# mutate(pracownik_pbl = str_extract(ZA_UWAGI, "(?<=akceptuje:)([A-Z]*)")) %>%
# select(-ZA_UWAGI)
#
#poprzednie_importy <- rbind(listy_2004,listy_2005,listy_2006,listy_2007,listy_2008) %>%
# full_join(.,zapisy,by = "ZA_ZAPIS_ID") %>%
# select(X650,X655,DZ_DZIAL_ID,DZ_NAZWA,ZA_STATUS_IMP) %>%
# mutate(X650 = str_remove_all(X650,"\\\\7"),
# X655 = str_remove_all(X655,"\\\\7"),
# X650 = str_remove_all(str_replace_all(X650,"(\\$a)","\\\\#7\\1"),"#"),
# X655 = str_remove_all(str_replace_all(X655,"(\\$a)","\\\\#7\\1"),"#")) %>%
# group_by_at(vars(X650:DZ_NAZWA)) %>%
# mutate(ZA_STATUS_IMP = paste(ZA_STATUS_IMP,collapse = "|")) %>%
# ungroup() %>%
# unique() %>%
# ungroup() %>%
# filter(!grepl("\\|",DZ_DZIAL_ID)) %>%
# filter(grepl("IOK",ZA_STATUS_IMP)) %>%
# filter(!grepl("INO|IMP|IPN|IPC",ZA_STATUS_IMP)) %>%
# filter(!grepl("osobowe",DZ_NAZWA)) %>%
# filter(!(is.na(X650)&is.na(X655))) %>%
# mutate(ile650 = str_count(X650,"\\|")+1,
# ile655 = str_count(X655,"\\|")+1) %>%
# filter(ile650<=10|ile655<=10) %>%
# select(-ile650,-ile655) %>%
# mutate(ile_statusow = str_count(ZA_STATUS_IMP,"\\|")+1) %>%
# arrange(X655,X650,-ile_statusow)
#poprzednie_importy$id_grupy <- cumsum(!duplicated(poprzednie_importy[1:2]))
#poprzednie_importy <- poprzednie_importy[!duplicated(poprzednie_importy$id_grupy),] %>%
# mutate(id = row_number()) %>%
# select(-ile_statusow,-id_grupy)
#
#do_dzialowania <- data.frame(id = as.integer(), X650 = as.character(), X655 = as.character(), stringsAsFactors = FALSE)
#x <- 1:length(poprzednie_importy$id)
#for (i in x){
# progress(match(i,x), max.value = length(x))
# if (is.na(poprzednie_importy$X650[i])&!is.na(poprzednie_importy$X655[i])){
# permutations <- as.data.frame(permutations(unlist(str_split(poprzednie_importy$X655[i],"\\|")), str_count(poprzednie_importy$X655[i],"\\|")+1)) %>%
# unite(data=.,col = "permutation", sep = "|") %>%
# mutate(X650 = NA,
# X655 = permutation,
# id = poprzednie_importy$id[i]) %>%
# select(id,X650,X655)
# do_dzialowania <- rbind(do_dzialowania,permutations)
# } else if (is.na(poprzednie_importy$X655[i])&!is.na(poprzednie_importy$X650[i])){
# permutations <- as.data.frame(permutations(unlist(str_split(poprzednie_importy$X650[i],"\\|")), str_count(poprzednie_importy$X650[i],"\\|")+1)) %>%
# unite(data=.,col = "permutation", sep = "|") %>%
# mutate(X650 = permutation,
# X655 = NA,
# id = poprzednie_importy$id[i]) %>%
# select(id,X650,X655)
# do_dzialowania <- rbind(do_dzialowania,permutations)
# } else {
# permutations <- as.data.frame(permutations(unlist(str_split(poprzednie_importy$X650[i],"\\|")), str_count(poprzednie_importy$X650[i],"\\|")+1)) %>%
# unite(data=.,col = "permutation", sep = "|") %>%
# mutate(X650 = permutation,
# id = poprzednie_importy$id[i]) %>%
# select(id,X650)
# permutations650 <- data.frame(stringsAsFactors = FALSE)
# permutations650 <- rbind(permutations650,permutations)
# permutations <- as.data.frame(permutations(unlist(str_split(poprzednie_importy$X655[i],"\\|")), str_count(poprzednie_importy$X655[i],"\\|")+1)) %>%
# unite(data=.,col = "permutation", sep = "|") %>%
# mutate(X655 = permutation,
# id = poprzednie_importy$id[i]) %>%
# select(id,X655)
# permutations655 <- data.frame(stringsAsFactors = FALSE)
# permutations655 <- rbind(permutations655,permutations)
# permutations <- merge(permutations650,permutations655,by = "id",all = TRUE) %>%
# select(id,X650,X655)
# do_dzialowania <- rbind(do_dzialowania,permutations)
# }
#}
#
#do_dzialowania <- do_dzialowania %>%
# full_join(.,poprzednie_importy %>% select(id,DZ_DZIAL_ID,DZ_NAZWA),by = "id") %>%
# select(-id)
#do_dzialowania[is.na(do_dzialowania)] <- ""
#####tutaj sprawdzić
#do_dzialowania_przedm <- merge(bn_ok %>% filter(czy_automatycznie=="nie"&rodzaj_ksiazki=="przedmiotowa"),do_dzialowania, by = c("X650","X655")) %>%
# select(id,DZ_DZIAL_ID,DZ_NAZWA)
#wczytanie kartotek PBL
redaktorzy_dzialow <- sheets_read(ss = "1Baje-ZfPgAKEDAoDzeo_eCBDrsL7jAXt6ubP2cedbFc", sheet = "redaktorzy_działów") %>%
select(DZ_DZIAL_ID, DZ_NAZWA, redaktor_dzialu) #%>%
Reading from 'redaktorzy dzia戼㸳昼㸳w'
Range "'redaktorzy_dzia戼㸳昼㸳w'"
New names:
* `` -> ...14
#mutate(DZ_DZIAL_ID = as.character(DZ_DZIAL_ID))
PBL_dzialy <- dbReadTable(PBL,'PBL_DZIALY') %>%
select(1,3,6)
PBL_dzialy_path <- merge(x = PBL_dzialy, y = PBL_dzialy, by.x = "DZ_DZ_DZIAL_ID", by.y = "DZ_DZIAL_ID", all.x = TRUE)
colnames(PBL_dzialy_path) <- c("NAD_DZ_DZIAL_ID", "DZ_DZIAL_ID", "DZ_NAZWA", "NAD_DZ_NAZWA", "NAD_NAD_DZ_DZIAL_ID")
PBL_dzialy_path <- merge(x = PBL_dzialy_path, y = PBL_dzialy, by.x = "NAD_NAD_DZ_DZIAL_ID", by.y = "DZ_DZIAL_ID", all.x = TRUE)
colnames(PBL_dzialy_path) <- c("NAD_NAD_DZ_DZIAL_ID", "NAD_DZ_DZIAL_ID", "DZ_DZIAL_ID", "DZ_NAZWA", "NAD_DZ_NAZWA", "NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_DZ_DZIAL_ID")
PBL_dzialy_path <- merge(x = PBL_dzialy_path, y = PBL_dzialy, by.x = "NAD_NAD_NAD_DZ_DZIAL_ID", by.y = "DZ_DZIAL_ID", all.x = TRUE)
colnames(PBL_dzialy_path) <- c("NAD_NAD_NAD_DZ_DZIAL_ID", "NAD_NAD_DZ_DZIAL_ID", "NAD_DZ_DZIAL_ID", "DZ_DZIAL_ID", "DZ_NAZWA", "NAD_DZ_NAZWA", "NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_NAD_DZ_DZIAL_ID")
PBL_dzialy_path <- merge(x = PBL_dzialy_path, y = PBL_dzialy, by.x = "NAD_NAD_NAD_NAD_DZ_DZIAL_ID", by.y = "DZ_DZIAL_ID", all.x = TRUE)
colnames(PBL_dzialy_path) <- c("NAD_NAD_NAD_NAD_DZ_DZIAL_ID", "NAD_NAD_NAD_DZ_DZIAL_ID", "NAD_NAD_DZ_DZIAL_ID", "NAD_DZ_DZIAL_ID", "DZ_DZIAL_ID", "DZ_NAZWA", "NAD_DZ_NAZWA", "NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_NAD_NAD_DZ_DZIAL_ID")
PBL_dzialy_path <- merge(x = PBL_dzialy_path, y = PBL_dzialy, by.x = "NAD_NAD_NAD_NAD_NAD_DZ_DZIAL_ID", by.y = "DZ_DZIAL_ID", all.x = TRUE)
colnames(PBL_dzialy_path) <- c("NAD_NAD_NAD_NAD_NAD_DZ_DZIAL_ID", "NAD_NAD_NAD_NAD_DZ_DZIAL_ID", "NAD_NAD_NAD_DZ_DZIAL_ID", "NAD_NAD_DZ_DZIAL_ID", "NAD_DZ_DZIAL_ID", "DZ_DZIAL_ID", "DZ_NAZWA", "NAD_DZ_NAZWA", "NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_NAD_NAD_DZ_NAZWA", "NAD_NAD_NAD_NAD_NAD_NAD_DZ_DZIAL_ID")
PBL_dzialy_path <- PBL_dzialy_path %>%
select(-length(PBL_dzialy_path)) %>%
filter(DZ_DZIAL_ID!=0) %>%
select(6,7,5,8,4,9,3,10,2,11,1,12) %>%
unique()
PBL_dz_osob <- PBL_dzialy_path %>%
filter(grepl("osobowe", DZ_NAZWA)|grepl("osobowe", NAD_DZ_NAZWA)|grepl("osobowe", NAD_NAD_DZ_NAZWA)|grepl("osobowe", NAD_NAD_NAD_DZ_NAZWA)|grepl("osobowe", NAD_NAD_NAD_NAD_DZ_NAZWA)|grepl("osobowe", NAD_NAD_NAD_NAD_NAD_DZ_NAZWA)) %>%
select(1,2,3,4,5,6,7,8) %>%
filter(DZ_DZIAL_ID!=148)
PBL_dz_osob_1 <- PBL_dz_osob %>%
select(1,2,3,4)
PBL_dz_osob_2 <- PBL_dz_osob %>%
select(1,2,5,6)
PBL_dz_osob_3 <- PBL_dz_osob %>%
select(1,2,7,8)
colnames(PBL_dz_osob_2) <- c(names(PBL_dz_osob_1))
colnames(PBL_dz_osob_3) <- c(names(PBL_dz_osob_1))
PBL_dz_osob <- rbind(PBL_dz_osob_1,PBL_dz_osob_2,PBL_dz_osob_3) %>%
filter(!is.na(NAD_DZ_DZIAL_ID)) %>%
unique()
PBL_dz_osob <- rbind(PBL_dz_osob, c("15043", "Hasła osobowe(luksemburska)","15043", "Hasła osobowe(luksemburska)"), c("430", "Hasła osobowe (Ludzie teatru i filmu)","430", "Hasła osobowe (Ludzie teatru i filmu)"))
PBL_dz_osob_bez_teatru <- PBL_dz_osob %>%
filter(DZ_DZIAL_ID!=430)
PBL_tworcy <- dbReadTable(PBL,'PBL_TWORCY')
tw_i_dz_podm <- merge(x=PBL_tworcy,y=PBL_dz_osob_bez_teatru, by.x = "TW_DZ_DZIAL_ID", by.y = "NAD_DZ_DZIAL_ID", all.x = TRUE) %>%
arrange(TW_TWORCA_ID)
tw_i_dz_podm <- data.frame(tw_i_dz_podm, pol_osob = ifelse(tw_i_dz_podm$TW_DZ_DZIAL_ID == 148 & substr(tw_i_dz_podm$TW_NAZWISKO,1,1)==str_sub(tw_i_dz_podm$DZ_NAZWA,nchar(as.character(tw_i_dz_podm$DZ_NAZWA)),nchar(as.character(tw_i_dz_podm$DZ_NAZWA))),TRUE,FALSE), pol = ifelse(tw_i_dz_podm$TW_DZ_DZIAL_ID == 148, TRUE, FALSE)) %>%
filter(pol_osob == TRUE | pol == FALSE)
PBL_tworcy_podm <- tw_i_dz_podm %>%
select(TW_TWORCA_ID, TW_NAZWISKO, TW_IMIE, DZ_DZIAL_ID, DZ_NAZWA, TW_NAZW_WLASCIWE, TW_PSEUDONIMY, TW_DATA_URODZIN, TW_DATA_ZGONU, TW_ROCZNIKI_PBL, TW_SLOWA_KLUCZOWE, TW_UWAGI, TW_ROK_URODZIN, TW_ROK_ZGONU, TW_LICZBA_ZAPISOW, TW_ADNOTACJE, TW_TRANSLITERACJE) %>%
filter(!is.na(DZ_DZIAL_ID))
colnames(PBL_tworcy_podm) <- c("TW_TWORCA_ID", "TW_NAZWISKO", "TW_IMIE", "TW_DZ_DZIAL_ID", "DZ_NAZWA", "TW_NAZW_WLASCIWE", "TW_PSEUDONIMY", "TW_DATA_URODZIN", "TW_DATA_ZGONU", "TW_ROCZNIKI_PBL", "TW_SLOWA_KLUCZOWE", "TW_UWAGI", "TW_ROK_URODZIN", "TW_ROK_ZGONU", "TW_LICZBA_ZAPISOW", "TW_ADNOTACJE", "TW_TRANSLITERACJE")
PBL_tworcy_podm <- PBL_tworcy_podm %>%
mutate(nazwa = ifelse(is.na(TW_IMIE),as.character(TW_NAZWISKO),paste(TW_NAZWISKO,TW_IMIE, sep = "")),
nazwa = str_to_lower(str_replace_all(nazwa, "\\W", "")),
nazwa = str_replace_all(str_to_lower(nazwa), "\\W", ""))
tw_i_dz <- merge(x=PBL_tworcy,y=PBL_dz_osob, by.x = "TW_DZ_DZIAL_ID", by.y = "NAD_DZ_DZIAL_ID", all.x = TRUE) %>%
arrange(TW_TWORCA_ID)
tw_i_dz <- data.frame(tw_i_dz, pol_osob = ifelse(tw_i_dz$TW_DZ_DZIAL_ID == 148 & substr(tw_i_dz$TW_NAZWISKO,1,1)==str_sub(tw_i_dz$DZ_NAZWA,nchar(as.character(tw_i_dz$DZ_NAZWA)),nchar(as.character(tw_i_dz$DZ_NAZWA))),TRUE,FALSE), pol = ifelse(tw_i_dz$TW_DZ_DZIAL_ID == 148, TRUE, FALSE)) %>%
filter(pol_osob == TRUE | pol == FALSE)
PBL_tworcy <- tw_i_dz %>%
select(TW_TWORCA_ID, TW_NAZWISKO, TW_IMIE, DZ_DZIAL_ID, DZ_NAZWA, TW_NAZW_WLASCIWE, TW_PSEUDONIMY, TW_DATA_URODZIN, TW_DATA_ZGONU, TW_ROCZNIKI_PBL, TW_SLOWA_KLUCZOWE, TW_UWAGI, TW_ROK_URODZIN, TW_ROK_ZGONU, TW_LICZBA_ZAPISOW, TW_ADNOTACJE, TW_TRANSLITERACJE)
colnames(PBL_tworcy) <- c("TW_TWORCA_ID", "TW_NAZWISKO", "TW_IMIE", "TW_DZ_DZIAL_ID", "DZ_NAZWA", "TW_NAZW_WLASCIWE", "TW_PSEUDONIMY", "TW_DATA_URODZIN", "TW_DATA_ZGONU", "TW_ROCZNIKI_PBL", "TW_SLOWA_KLUCZOWE", "TW_UWAGI", "TW_ROK_URODZIN", "TW_ROK_ZGONU", "TW_LICZBA_ZAPISOW", "TW_ADNOTACJE", "TW_TRANSLITERACJE")
PBL_tworcy <- PBL_tworcy %>%
mutate(nazwa = ifelse(is.na(TW_IMIE),as.character(TW_NAZWISKO),paste(TW_NAZWISKO,TW_IMIE, sep = "")),
nazwa = str_to_lower(str_replace_all(nazwa, "\\W", "")),
nazwa = str_replace_all(str_to_lower(nazwa), "\\W", ""),
TW_DZ_DZIAL_ID = as.numeric(TW_DZ_DZIAL_ID))
PBL_autorzy <- dbReadTable(PBL,'PBL_AUTORZY') %>%
mutate(nazwa = ifelse(is.na(AM_IMIE),as.character(AM_NAZWISKO),paste(AM_NAZWISKO,AM_IMIE, sep = "")),
nazwa = str_to_lower(str_replace_all(nazwa, "\\W", "")),
nazwa = str_replace_all(str_to_lower(nazwa), "\\W", "")) %>%
filter(nazwa != "nana")
PBL_wspoltworcy <- dbReadTable(PBL,'PBL_OSOBY') %>%
mutate(nazwa_prosta = str_replace_all(str_to_lower(ifelse(is.na(OS_IMIE),as.character(OS_NAZWISKO),paste(OS_NAZWISKO,OS_IMIE, sep = ""))), "\\W", "")) %>%
filter(nazwa_prosta !="nana")
PBL_funkcje <- sheets_read(ss = "1htn_L6REs3GdG1xSiGHIfr6MJvjmmU_kVGxiMZtCV24", sheet = "Arkusz1")
Reading from 'import_pbl_funkcje'
Range "'Arkusz1'"
PBL_wydawnictwa <- dbReadTable(PBL,'PBL_WYDAWNICTWA') %>%
mutate(nazwa_prosta = str_replace_all(str_to_lower(paste(WY_MIASTO, WY_NAZWA)), "\\W", "")) %>%
filter(nazwa_prosta !="nana")
PBL_rodzaje_zapisow <- dbReadTable(PBL,'PBL_RODZAJE_ZAPISOW')
BN_PBL_lista_literatur <- sheets_read(ss = "1zbwjnrtWGvbjrQTLMavJcWSu7HfP0I-USNgZ_KWiXjc", sheet = "lista ukd bn") %>%
filter(!is.na(ukd_ogolne)) %>%
select(3:9) %>%
cSplit(.,c("pbl_id","pbl_nazwa","redaktor_dzialu","pbl_id_literatury","pbl_literatura"),sep = "|",direction = "long") %>%
filter(!is.na(pbl_id))
Reading from 'lista_UKD_literatury'
Range "'lista ukd bn'"
PBL_hasla_osobowe <- sheets_read(ss = "1zbwjnrtWGvbjrQTLMavJcWSu7HfP0I-USNgZ_KWiXjc", sheet = "pbl_hasla_osobowe") %>%
select(2:5)
Reading from 'lista_UKD_literatury'
Range "'pbl_hasla_osobowe'"
New names:
* nazwa -> nazwa...1
* nazwa -> nazwa...5
colnames(PBL_hasla_osobowe) <- c("DZ_DZIAL_ID","DZ_NAZWA","redaktor_dzialu","nazwa")
bn_ok <- chunk7
# podzielenie unikatowych rekordów bn na dwa wiersze w tabeli, z których powstaną dwa rekordy pbl
bn_ok <- bn_ok %>%
mutate(ZA_UWAGI = 1:nrow(.))
wspolwydania_fix <- bn_ok %>%
filter(rodzaj_ksiazki=="współwydanie") %>%
mutate(X245 = ifelse(grepl("\\]\\.[^$]",X245),str_replace(X245,"(\\$c)(.*)(\\]\\. )(.* \\/ .*)","\\1\\2]|10$a\\4"),str_replace(X245,"(\\$c)(.*?)(?<!tł|red)(\\. )(.* \\/ .*)","\\1\\2|10$a\\4")),
X245 = str_replace_all(X245, "\\/[^\\$]", "/$c"))
# usunięcie ze zbioru współwydawnictw (będą później połączone)
bn_ok <- bn_ok %>%
filter(id %notin% wspolwydania_fix$id)
# usunięcie z pola X246 wersji tytułów, które nie są tytułami oryginału
marc_field_246 <- wspolwydania_fix %>%
select(ZA_UWAGI,X246)%>%
mutate(X246=str_replace_all(X246,"(^|\\|)","~\\1"),
X246 = ifelse(X246=="~",as.character(X246),str_remove(X246,"^~"))) %>%
cSplit(.,"X246",sep = "~",direction = "long") %>%
mutate(X246=str_remove_all(X246,"^\\|")) %>%
mutate(indicator = str_replace_all(X246,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(wspolwydania_fix$X246,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_246)[1]))
colnames(empty_table) <-subfield_list
marc_field_246<-cbind(marc_field_246,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_246$X246 <- str_replace(marc_field_246$X246,subfield_list_char[i],"|\\1")
}
Progress: 1 on 2 Progress: 2 on 2
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_246[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_246$X246),str_replace_all(gsub(string,"\\3",marc_field_246$X246),"\\${2}.", "~"),NA)
}
Progress: 1 on 2 Progress: 2 on 2
marc_field_246 <- marc_field_246[, colSums(is.na(marc_field_246)) != nrow(marc_field_246)]
marc_field_246 <- marc_field_246 %>%
filter(is.na(`$i`)|`$i`!="Tyt. przekł.:") %>%
select(ZA_UWAGI,X246) %>%
mutate(X246 = str_remove_all(X246,"\\|")) %>%
group_by(ZA_UWAGI) %>%
mutate(X246 = paste(X246,collapse = "|")) %>%
ungroup() %>%
unique()
wspolwydania_fix$X246 <- marc_field_246$X246
# podział na dwa rekordy
wspolwydania_fix <- wspolwydania_fix %>%
cSplit(c("X245", "X246"), sep = "|", direction = "long") %>%
filter(!is.na(X245))
# zmiana pola ZA_UWAGI na wartość unikatową
wspolwydania_fix %$%
{ ZA_UWAGI==lag(ZA_UWAGI,)} %>%
as.numeric() %>%
{.} -> wspolwydania_fix$same
wspolwydania_fix$same[1] <- 0
wspolwydania_fix <- wspolwydania_fix %>%
mutate(ZA_UWAGI = ifelse(same == 0, paste(rok,sprintf("%05d", as.integer(ZA_UWAGI)), "0", sep = ""), paste(rok,sprintf("%05d", as.integer(ZA_UWAGI)), "1", sep = ""))) %>%
select(-same)
# połączenie zbiorów
bn_ok <- bn_ok %>%
mutate(ZA_UWAGI = paste(rok,sprintf("%05d", as.integer(ZA_UWAGI)),sep = "")) %>%
bind_rows(wspolwydania_fix)
binding character and factor vector, coercing into character vectorbinding character and factor vector, coercing into character vector
chunk10 <- bn_ok
bn_ok <- chunk10
przedmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="przedmiotowa")
###przypisanie redaktora na podstawie osoby z 600 jako tematu - książki o twórcy
#600
marc_field_600 <- przedmiotowa_redaktorzy %>%
select(ZA_UWAGI,X600)%>%
filter(X600!="") %>%
mutate(X600=str_replace_all(X600,"(^|\\|)","~\\1")) %>%
cSplit(.,"X600",sep = "~",direction = "long") %>%
filter(X600!="") %>%
mutate(X600=str_remove_all(X600,"^\\|")) %>%
mutate(indicator = str_replace_all(X600,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(przedmiotowa_redaktorzy$X600,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_600)[1]))
colnames(empty_table) <-subfield_list
marc_field_600<-cbind(marc_field_600,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_600$X600 <- str_replace(marc_field_600$X600,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_600[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_600$X600),str_replace_all(gsub(string,"\\3",marc_field_600$X600),"\\${2}.", "~"),NA)
}
marc_field_600 <- marc_field_600 %>%
select(ZA_UWAGI,`$a`,`$d`,`$c`) %>%
mutate(name = ifelse(!is.na(`$c`)&substr(`$c`,nchar(`$c`),nchar(`$c`))==";",paste(`$a`,`$c`,`$d`,sep = " "),ifelse(!is.na(`$d`),paste(`$a`,`$d`,sep = " "),as.character(`$a`)))) %>%
select(ZA_UWAGI,name) %>%
mutate(name = str_replace(name,"(\\))(\\.$)","\\1"),
name = str_replace(name, "([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)","\\1"))
marc_field_600 <- marc_field_600 %>%
unique() %>%
inner_join(.,pbl_viaf,by = c("name" = "BN_name")) %>%
left_join(.,PBL_tworcy,by = c("pbl_id"="TW_TWORCA_ID")) %>%
left_join(.,redaktorzy_dzialow,by = c("TW_DZ_DZIAL_ID"="DZ_DZIAL_ID")) %>%
select(ZA_UWAGI,TW_TWORCA_ID=pbl_id,TW_NAZWISKO,TW_IMIE,TW_DZ_DZIAL_ID,DZ_NAZWA=DZ_NAZWA.x,redaktor_dzialu)
count <- as.data.frame(table(marc_field_600$ZA_UWAGI))
marc_field_600 <- merge(marc_field_600,count,by.x = "ZA_UWAGI", by.y = "Var1") %>%
filter(Freq<2) %>%
select(-Freq) %>%
rename(DZ_DZIAL_ID=TW_DZ_DZIAL_ID) %>%
mutate(RZ_RODZAJ_ID = 2,
RZ_NAZWA = "książka o twórcy (przedmiotowa)")
###przypisanie do redaktorów na podstawie literatury z pola 655
przedmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="przedmiotowa") %>%
filter(ZA_UWAGI %notin% marc_field_600$ZA_UWAGI)
#655
marc_field_655 <- przedmiotowa_redaktorzy %>%
select(ZA_UWAGI,X655)%>%
filter(X655!="") %>%
mutate(X655=str_replace_all(X655,"(^|\\|)","~\\1")) %>%
cSplit(.,"X655",sep = "~",direction = "long") %>%
filter(X655!="") %>%
mutate(X655=str_remove_all(X655,"^\\|")) %>%
mutate(indicator = str_replace_all(X655,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(przedmiotowa_redaktorzy$X655,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_655)[1]))
colnames(empty_table) <-subfield_list
marc_field_655<-cbind(marc_field_655,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_655$X655 <- str_replace(marc_field_655$X655,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_655[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_655$X655),str_replace_all(gsub(string,"\\3",marc_field_655$X655),"\\${2}.", "~"),NA)
}
marc_field_655 <- marc_field_655 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
PBL_literatury_obce <- PBL_dzialy_path %>%
filter(NAD_DZ_DZIAL_ID==30) %>%
select(1,2) %>%
left_join(.,redaktorzy_dzialow,by = "DZ_DZIAL_ID") %>%
filter(!is.na(redaktor_dzialu)) %>%
select(1,DZ_NAZWA = 2,4) %>%
mutate(nazwa = substr(str_replace(DZ_NAZWA, "(.*?)( )(.*?)","\\3"),1,nchar(str_replace(DZ_NAZWA, "(.*?)( )(.*?)","\\3"))-1),
nazwa = ifelse(nazwa=="romska (cygańska","romsk|cygańsk",as.character(nazwa)))
reczne <- data.frame(DZ_DZIAL_ID = c(32,32,32,32,59,86,107,149,67,69,34,34,34,34,34,55,32,99,34),DZ_NAZWA = c("Literatura brytyjska i irlandzka","Literatura brytyjska i irlandzka","Literatura brytyjska i irlandzka","Literatura brytyjska i irlandzka","Literatura grecka starożytna","Literatura łacińska średniowieczna","Literatura syryjska","Literatura esperanto","Literatura holenderska","Literatury Indii","Literatury Afryki Subsaharyjskiej","Literatury Afryki Subsaharyjskiej","Literatury Afryki Subsaharyjskiej","Literatury Afryki Subsaharyjskiej","Literatury Afryki Subsaharyjskiej", "Literatura egipsko-arabska", "Literatura brytyjska i irlandzka","Literatura palestyńsko-arabska","Literatury Afryki Subsaharyjskiej"), redaktor_dzialu = c("BEATAK","BEATAK","BEATAK","BEATAK","BEATAS","BEATAS","BEATAD","CEZARY","TOMASZU","EWA","EWA","EWA","EWA","EWA","EWA","BEATAD","BEATAK","BEATAD","EWA"), nazwa = c("angielsk","szkock","irlandzk","walijsk","greck","łacińsk","syryjsk","esperanck","niderlandzk","indyjsk","południowoafryka","senegalsk","nigeryjsk","afrykańsk","ruandyjsk","egipsk. nowożytn","celtyck","palestyńsk","somalijsk"))
PBL_literatury_obce <- rbind(PBL_literatury_obce,reczne)
marc_field_655 <- sqldf("select *
from marc_field_655 a
left join PBL_literatury_obce b on a.`$a` like ('%'||b.nazwa||'%')") %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_655$same <- cumsum(!duplicated(marc_field_655[1]))
marc_field_655 <- marc_field_655[!duplicated(marc_field_655$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym") %>%
select(names(marc_field_600))
###przypisanie do redaktorów na podstawie literatury z pola 650
przedmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="przedmiotowa") %>%
filter(ZA_UWAGI %notin% marc_field_600$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% marc_field_655$ZA_UWAGI)
#650
marc_field_650 <- przedmiotowa_redaktorzy %>%
select(ZA_UWAGI,X650)%>%
filter(X650!="") %>%
mutate(X650=str_replace_all(X650,"(^|\\|)","~\\1")) %>%
cSplit(.,"X650",sep = "~",direction = "long") %>%
filter(X650!="") %>%
mutate(X650=str_remove_all(X650,"^\\|")) %>%
mutate(indicator = str_replace_all(X650,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(przedmiotowa_redaktorzy$X650,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_650)[1]))
colnames(empty_table) <-subfield_list
marc_field_650<-cbind(marc_field_650,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_650$X650 <- str_replace(marc_field_650$X650,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_650[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_650$X650),str_replace_all(gsub(string,"\\3",marc_field_650$X650),"\\${2}.", "~"),NA)
}
marc_field_650 <- marc_field_650 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
marc_field_650 <- sqldf("select *
from marc_field_650 a
left join PBL_literatury_obce b on a.`$a` like ('%'||b.nazwa||'%')") %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_650$same <- cumsum(!duplicated(marc_field_650[1]))
marc_field_650 <- marc_field_650[!duplicated(marc_field_650$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym") %>%
select(names(marc_field_600))
do_przedmiotowej1 <- rbind(marc_field_600,marc_field_655,marc_field_650)
#przypisanie na podstawie deskryptorów tematycznych z 650 i 655
zapisy <- RJDBC::dbGetQuery(PBL,
"select z.za_zapis_id, dz.dz_dzial_id, dz.dz_nazwa, rz.rz_rodzaj_id, rz.rz_nazwa, z.za_status_imp, z.za_uwagi
from pbl_zapisy z
join pbl_dzialy dz on dz.dz_dzial_id=z.za_dz_dzial1_id
join pbl_rodzaje_zapisow rz on rz.rz_rodzaj_id=z.za_rz_rodzaj1_id
where z.za_uwagi like '%import%'") %>%
mutate(pracownik_pbl = str_extract(ZA_UWAGI, "(?<=akceptuje:)([A-Z]*)")) %>%
select(-ZA_UWAGI)
nazwy_lit_obcych <- str_replace_all(paste(PBL_literatury_obce$nazwa,collapse = "|"),"\\(","\\\\(")
#aktualizacja - dodaj do skryptu listę z ostatnim brakującym zaimportowanym rocznikiem
poprzednie_importy <- rbind(listy_2004,listy_2005,listy_2006,listy_2007,listy_2008, listy_2009, listy_2010, listy_2011) %>%
full_join(.,zapisy,by = "ZA_ZAPIS_ID") %>%
select(ZA_ZAPIS_ID,X650,X655,DZ_DZIAL_ID,DZ_NAZWA,RZ_RODZAJ_ID,RZ_NAZWA,pracownik_pbl,ZA_STATUS_IMP) %>%
mutate(X650 = str_remove_all(X650,"\\\\7"),
X655 = str_remove_all(X655,"\\\\7"),
X650 = str_remove_all(str_replace_all(X650,"(\\$a)","\\\\#7\\1"),"#"),
X655 = str_remove_all(str_replace_all(X655,"(\\$a)","\\\\#7\\1"),"#")) %>%
unique() %>%
filter(RZ_RODZAJ_ID %notin% c(0,1,2,250,764)) %>%
arrange(pracownik_pbl,DZ_DZIAL_ID) %>%
filter(!grepl(nazwy_lit_obcych,X650)&!grepl(nazwy_lit_obcych,X655)) %>%
filter(!is.na(pracownik_pbl)) %>%
filter(ZA_STATUS_IMP %in% c("IOK","IPC"))
#przypisanie na podstawie częstotliwości deskryptorów 655
przedmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="przedmiotowa") %>%
filter(ZA_UWAGI %notin% do_przedmiotowej1$ZA_UWAGI)
deskryptory655 <- poprzednie_importy %>%
select(X655,pracownik_pbl,DZ_DZIAL_ID,DZ_NAZWA) %>%
filter(!is.na(X655)) %>%
unite(data=.,col = "deskryptor655", sep = "~")
deskryptory655 <- as.data.frame(table(deskryptory655$deskryptor655)) %>%
cSplit(.,"Var1",sep = "~",direction = "wide") %>%
rename(X655 = Var1_1,
redaktor_dzialu = Var1_2,
DZ_DZIAL_ID = Var1_3,
DZ_NAZWA = Var1_4) %>%
mutate(X655 = str_remove_all(X655,"\\\\7\\$a"),
X655 = str_remove_all(X655,"\\$2DBN"),
X655 = str_replace_all(X655,"\\$.|\\|"," "),
X655 = str_replace_all(X655," ",".*"),
X655 = str_replace_all(X655, "[^\\p{L}\\d\\*\\.\\-\\s]", "")) %>%
arrange(X655,-Freq,DZ_NAZWA)
deskryptory655$id_grupy <- cumsum(!duplicated(deskryptory655[2]))
deskryptory655 <- deskryptory655[!duplicated(deskryptory655$id_grupy),] %>%
select(-id_grupy) %>%
arrange(-Freq)
x <- 1:length(deskryptory655$X655)
test <- data.frame(stringsAsFactors = FALSE)
for (i in x) {
progress(match(i,x), max.value = length(x))
do_przedmiotowej2 <- przedmiotowa_redaktorzy %>%
mutate(redaktor_dzialu = ifelse(grepl(deskryptory655$X655[i],X655),as.character(deskryptory655$redaktor_dzialu)[i],NA),
ile = ifelse(grepl(deskryptory655$X655[i],X655),as.integer(deskryptory655$Freq)[i],NA),
co = ifelse(grepl(deskryptory655$X655[i],X655),as.character(deskryptory655$X655)[i],NA),
DZ_DZIAL_ID = ifelse(grepl(deskryptory655$X655[i],X655),as.integer(deskryptory655$DZ_DZIAL_ID)[i],NA),
DZ_NAZWA = ifelse(grepl(deskryptory655$X655[i],X655),as.character(deskryptory655$DZ_NAZWA)[i],NA)) %>%
filter(!is.na(redaktor_dzialu))
if (length(do_przedmiotowej2$redaktor_dzialu)>0) {
test <- rbind(test,do_przedmiotowej2)
} else {}
}
count <- as.data.frame(table(test$ZA_UWAGI))
do_przedmiotowej2 <- merge(test,count, by.x = "ZA_UWAGI",by.y = "Var1") %>%
mutate(dlugosc = nchar(co)) %>%
arrange(-Freq,ZA_UWAGI,-dlugosc,-ile)
do_przedmiotowej2$id_grupy <- cumsum(!duplicated(do_przedmiotowej2[1]))
do_przedmiotowej2 <- do_przedmiotowej2[!duplicated(do_przedmiotowej2$id_grupy),] %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym") %>%
select(names(do_przedmiotowej1))
#przypisanie na podstawie częstotliwości deskryptorów 650
przedmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="przedmiotowa") %>%
filter(ZA_UWAGI %notin% do_przedmiotowej1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_przedmiotowej2$ZA_UWAGI)
deskryptory650 <- poprzednie_importy %>%
select(X650,pracownik_pbl,DZ_DZIAL_ID,DZ_NAZWA) %>%
filter(!is.na(X650)) %>%
unite(data=.,col = "deskryptor650", sep = "~")
deskryptory650 <- as.data.frame(table(deskryptory650$deskryptor650)) %>%
cSplit(.,"Var1",sep = "~",direction = "wide") %>%
rename(X650 = Var1_1,
redaktor_dzialu = Var1_2,
DZ_DZIAL_ID = Var1_3,
DZ_NAZWA = Var1_4) %>%
mutate(X650 = str_remove_all(X650,"\\\\7\\$a"),
X650 = str_remove_all(X650,"\\$2DBN"),
X650 = str_remove_all(X650,"\\\\\\\\"),
X650 = str_replace_all(X650,"\\$.|\\|"," "),
X650 = str_replace_all(X650," ",".*"),
X650 = str_replace_all(X650, "[^\\p{L}\\d\\*\\.\\-\\s]", "")) %>%
arrange(X650,-Freq,DZ_NAZWA)
deskryptory650$id_grupy <- cumsum(!duplicated(deskryptory650[2]))
deskryptory650 <- deskryptory650[!duplicated(deskryptory650$id_grupy),] %>%
select(-id_grupy) %>%
arrange(-Freq)
x <- 1:length(deskryptory650$X650)
test <- data.frame(stringsAsFactors = FALSE)
for (i in x) {
progress(match(i,x), max.value = length(x))
do_przedmiotowej3 <- przedmiotowa_redaktorzy %>%
mutate(redaktor_dzialu = ifelse(grepl(deskryptory650$X650[i],X650),as.character(deskryptory650$redaktor_dzialu)[i],NA),
ile = ifelse(grepl(deskryptory650$X650[i],X650),as.integer(deskryptory650$Freq)[i],NA),
co = ifelse(grepl(deskryptory650$X650[i],X650),as.character(deskryptory650$X650)[i],NA),
DZ_DZIAL_ID = ifelse(grepl(deskryptory650$X650[i],X650),as.integer(deskryptory650$DZ_DZIAL_ID)[i],NA),
DZ_NAZWA = ifelse(grepl(deskryptory650$X650[i],X650),as.character(deskryptory650$DZ_NAZWA)[i],NA)) %>%
filter(!is.na(redaktor_dzialu))
if (length(do_przedmiotowej3$redaktor_dzialu)>0) {
test <- rbind(test,do_przedmiotowej3)
} else {}
}
count <- as.data.frame(table(test$ZA_UWAGI))
do_przedmiotowej3 <- merge(test,count, by.x = "ZA_UWAGI",by.y = "Var1") %>%
mutate(dlugosc = nchar(co)) %>%
arrange(-Freq,ZA_UWAGI,-dlugosc,-ile)
do_przedmiotowej3$id_grupy <- cumsum(!duplicated(do_przedmiotowej3[1]))
do_przedmiotowej3 <- do_przedmiotowej3[!duplicated(do_przedmiotowej3$id_grupy),] %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym") %>%
select(names(do_przedmiotowej1))
do_przedmiotowej <- rbind(do_przedmiotowej1,do_przedmiotowej2,do_przedmiotowej3)
#przypisanie przedmiotowej na podstawie słownika pojęć
do_przedmiotowej <- bn_ok %>%
filter(rodzaj_ksiazki=="przedmiotowa") %>%
left_join(.,do_przedmiotowej,by="ZA_UWAGI") %>%
#przypisanie na podstawie zdefiniowanych słów (dopisanie do gotowego pliku)
mutate(redaktor_dzialu = ifelse(is.na(redaktor_dzialu),
ifelse(grepl("teatr",X655,ignore.case = TRUE)|grepl("teatr",X650,ignore.case = TRUE),"MARTAK",
ifelse(grepl("film",X655,ignore.case = TRUE)|grepl("film",X650,ignore.case = TRUE),"OLA",
ifelse(grepl("telewizj",X655,ignore.case = TRUE)|grepl("telewizj",X650,ignore.case = TRUE),"EWA",
ifelse(grepl("radio",X655,ignore.case = TRUE)|grepl("radio",X650,ignore.case = TRUE),"EWA",
ifelse(grepl("czasopism",X655,ignore.case = TRUE)|grepl("czasopism",X650,ignore.case = TRUE),"TOMASZ",
ifelse(grepl("wydawnictw",X655,ignore.case = TRUE)|grepl("wydawnictw",X650,ignore.case = TRUE),"BARBARAW",
ifelse(grepl("od 1989",X655,ignore.case = TRUE)|grepl("od 1989",X650,ignore.case = TRUE),"PAULINA",
ifelse(grepl("ćwicze|zadan|szkoł|szkół|scenariusz zajęć|scenariusze zajęć|zajęć|pomocnicz|podręcznik",X655,ignore.case = TRUE)|grepl("ćwicze|zadan|szkoł|szkół|scenariusz zajęć|scenariusze zajęć|zajęć|pomocnicz|podręcznik",X650,ignore.case = TRUE),"KAROLINA",
ifelse(grepl("sceniczn",X655,ignore.case = TRUE)|grepl("sceniczn",X650,ignore.case = TRUE),"MARTAK",
ifelse(grepl("teoria|socjologia|antropologia|metafizyk|interpretac|filozof",X655,ignore.case = TRUE)|grepl("teoria|socjologia|antropologia|metafizyk|interpretac|filozof",X650,ignore.case = TRUE),"PAULINA",
ifelse(grepl("ludow|zwycz|obycz|folkl",X655,ignore.case = TRUE)|grepl("ludow|zwycz|obycz|folkl",X650,ignore.case = TRUE),"ANIA",
ifelse(grepl("katolic|biblia|biblij|kościół",X655,ignore.case = TRUE)|grepl("katolic|biblia|biblij|kościół",X650,ignore.case = TRUE),"BEATAS",
ifelse(grepl("druk|rękopi|inkunab|inwent|bibliogr|słownik|bibliotek",X655,ignore.case = TRUE)|grepl("druk|rękopi|inkunab|inwent|bibliogr|słownik|bibliotek",X650,ignore.case = TRUE),"IZA",
ifelse(grepl("zabawk|dziec",X655,ignore.case = TRUE)|grepl("zabawk|dziec",X650,ignore.case = TRUE),"BARBARAW",
ifelse(grepl("tematyka|20-21 w.|21 w.",X655,ignore.case = TRUE)|grepl("tematyka|20-21 w.|21 w.",X650,ignore.case = TRUE),"PAULINA",
ifelse(grepl("19|18|17|16|15|14|13",X655,ignore.case = TRUE)|grepl("19|18|17|16|15|14|13",X650,ignore.case = TRUE),"GOSIA",
ifelse(grepl("polityk",X655,X655,ignore.case = TRUE)|grepl("polityk",X650,X655,ignore.case = TRUE),"PAULINA",
ifelse(grepl("historia",X655,X655,ignore.case = TRUE)|grepl("historia",X650,X655,ignore.case = TRUE),"GOSIA",NA)))))))))))))))))),as.character(redaktor_dzialu)),
RZ_RODZAJ_ID = ifelse(is.na(RZ_RODZAJ_ID),21,as.integer(RZ_RODZAJ_ID)),
RZ_NAZWA = ifelse(is.na(RZ_NAZWA),"książka w haśle rzeczowym",as.character(RZ_NAZWA))) %>%
select(names(do_przedmiotowej1)) %>%
filter(!is.na(redaktor_dzialu))
#wydobycie zbioru, który ciągle nie ma przypisanych redaktorów do przedmiotowej
przedmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="przedmiotowa") %>%
filter(ZA_UWAGI %notin% do_przedmiotowej$ZA_UWAGI)
#dla książek, które mają kilku autorów w osoba_bn_temat - przypisanie do redaktora powszechnej - BEATAD?
do_przedmiotowej4 <- przedmiotowa_redaktorzy %>%
filter(!is.na(osoba_bn_temat)) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
DZ_DZIAL_ID = NA,
DZ_NAZWA = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym",
redaktor_dzialu = "BEATAD") %>%
select(names(do_przedmiotowej1))
#dla książek, które nie mają wypełnionego osoba_bn_autor - przypisanie do Marty z x? czy losowo do kogoś?
do_przedmiotowej5 <- przedmiotowa_redaktorzy %>%
filter(is.na(osoba_bn_autor)) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
DZ_DZIAL_ID = NA,
DZ_NAZWA = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym",
redaktor_dzialu = "MARTAKx") %>%
select(names(do_przedmiotowej1))
#połaczenie wszystkich przedmiotowych z przypisanymi redaktorami w jeden plik
do_przedmiotowej <- rbind(do_przedmiotowej,do_przedmiotowej4,do_przedmiotowej5)
#dla książek, które mają wypełnione osoba_bn_autor - zmiana na podmiotową do ręcznego przejrzenia i przypisanie redaktorów
###przypisanie do podmiotowej!!!!!!!!!!!!!!!!!!!###############
do_podmiotowej1 <- przedmiotowa_redaktorzy %>%
filter(!is.na(osoba_bn_autor))
#trzeba zaktualizować w bn_ok, że teraz to są podmiotowe
#lista rekordów do przepisania z przedmiotowej na podmiotową
lista_do_przepisania <- do_podmiotowej1$ZA_UWAGI
bn_ok$rodzaj_ksiazki[bn_ok$ZA_UWAGI %in% lista_do_przepisania] <- "podmiotowa"
#to, co było podmiotową bez autora powinno trafić do literatury anonimowej z pracownikiem przedm, więc teraz trzeba to przepisać do przedmiotowej - na końcu procesu
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa"&X100=="")
#przypisanie literatury anonimowej
#655
marc_field_655 <- podmiotowa_redaktorzy %>%
select(ZA_UWAGI,X655)%>%
filter(X655!="") %>%
mutate(X655=str_replace_all(X655,"(^|\\|)","~\\1")) %>%
cSplit(.,"X655",sep = "~",direction = "long") %>%
filter(X655!="") %>%
mutate(X655=str_remove_all(X655,"^\\|")) %>%
mutate(indicator = str_replace_all(X655,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(podmiotowa_redaktorzy$X655,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_655)[1]))
colnames(empty_table) <-subfield_list
marc_field_655<-cbind(marc_field_655,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_655$X655 <- str_replace(marc_field_655$X655,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_655[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_655$X655),str_replace_all(gsub(string,"\\3",marc_field_655$X655),"\\${2}.", "~"),NA)
}
marc_field_655 <- marc_field_655 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
PBL_literatury_anonimowe <- PBL_dzialy_path %>%
filter(grepl("Utwory anonim",DZ_NAZWA)) %>%
select(DZ_DZIAL_ID,DZ_NAZWA,NAD_NAD_DZ_DZIAL_ID) %>%
left_join(.,redaktorzy_dzialow,by = c("NAD_NAD_DZ_DZIAL_ID"="DZ_DZIAL_ID")) %>%
select(1,DZ_NAZWA = 2,5) %>%
filter(DZ_DZIAL_ID %notin% c(1922,1983)) %>%
group_by(DZ_DZIAL_ID) %>%
mutate(nazwa = paste(trim(unlist(str_extract_all(DZ_NAZWA,"(?<=\\()(.*?)(?=\\(|\\))"))),collapse = "|"),
nazwa = str_remove_all(nazwa,"(.)(?=\\||$)"),
nazwa = str_remove(nazwa,"literatur. "),
nazwa = ifelse(nazwa=="","polsk",as.character(nazwa)),
redaktor_dzialu = ifelse(is.na(redaktor_dzialu),"ANIA",as.character(redaktor_dzialu))) %>%
ungroup()
reczne <- data.frame(DZ_DZIAL_ID = c(899,694,694,1174,145,1220),DZ_NAZWA = c("Utwory anonimowe (Indii)","Utwory anonimowe (brytyjska i irlandzka)","Utwory anonimowe (brytyjska i irlandzka)","Utwory anonimowe (starosłowiańska)","Utwory anonimowe i ulotne","Utwory anonimowe (turecka)"), redaktor_dzialu = c("EWA","BEATAK","BEATAK","BEATAD","ANIA","EWA"), nazwa = c("indyjsk","walijsk","angielsk","starorusk","kaszubsk","nogajsk"))
PBL_literatury_anonimowe <- rbind(PBL_literatury_anonimowe,reczne)
marc_field_655 <- sqldf("select *
from marc_field_655 a
left join PBL_literatury_anonimowe b on a.`$a` like ('%'||b.nazwa||'%')") %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_655$same <- cumsum(!duplicated(marc_field_655[1]))
marc_field_655 <- marc_field_655[!duplicated(marc_field_655$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym") %>%
select(names(marc_field_600))
###przypisanie do redaktorów literatury anonimowej na podstawie literatury z pola 650
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa"&X100=="") %>%
filter(ZA_UWAGI %notin% marc_field_655$ZA_UWAGI)
#650
marc_field_650 <- podmiotowa_redaktorzy %>%
select(ZA_UWAGI,X650)%>%
filter(X650!="") %>%
mutate(X650=str_replace_all(X650,"(^|\\|)","~\\1")) %>%
cSplit(.,"X650",sep = "~",direction = "long") %>%
filter(X650!="") %>%
mutate(X650=str_remove_all(X650,"^\\|")) %>%
mutate(indicator = str_replace_all(X650,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(podmiotowa_redaktorzy$X650,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_650)[1]))
colnames(empty_table) <-subfield_list
marc_field_650<-cbind(marc_field_650,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_650$X650 <- str_replace(marc_field_650$X650,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_650[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_650$X650),str_replace_all(gsub(string,"\\3",marc_field_650$X650),"\\${2}.", "~"),NA)
}
marc_field_650 <- marc_field_650 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
marc_field_650 <- sqldf("select *
from marc_field_650 a
left join PBL_literatury_anonimowe b on a.`$a` like ('%'||b.nazwa||'%')") %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_650$same <- cumsum(!duplicated(marc_field_650[1]))
marc_field_650 <- marc_field_650[!duplicated(marc_field_650$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym") %>%
select(names(marc_field_600))
do_podmiotowej1 <- rbind(marc_field_655,marc_field_650)
#co zrobić z pozostałymi podmiotowymi anonimowymi, których nie udało się przypisać?
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa"&X100=="") %>%
filter(ZA_UWAGI %notin% do_podmiotowej1$ZA_UWAGI) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
DZ_DZIAL_ID = NA,
DZ_NAZWA = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym",
redaktor_dzialu = "KAROLINA") %>%
select(names(do_przedmiotowej1))
do_podmiotowej1 <- rbind(do_podmiotowej1,podmiotowa_redaktorzy)
#lista rekordów do przepisania z podmiotowej na przedmiotową (chodzi o literaturę anonimową)
lista_do_przepisania <- do_podmiotowej1$ZA_UWAGI
bn_ok$rodzaj_ksiazki[bn_ok$ZA_UWAGI %in% lista_do_przepisania] <- "przedmiotowa"
#przetworzenie całej podmiotowej (bo plik do_podmiotowej1 już jest w środku)
###przypisanie redaktora na podstawie osoby z 100 jako twórcy (autora) (tabela pbl-bn-viaf)- książki twórcy
#100
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
filter(ZA_UWAGI %notin% do_podmiotowej1$ZA_UWAGI)
marc_field_100 <- podmiotowa_redaktorzy %>%
select(ZA_UWAGI,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(podmiotowa_redaktorzy$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
marc_field_100 <- marc_field_100 %>%
select(ZA_UWAGI,`$a`,`$d`,`$c`) %>%
mutate(name = ifelse(!is.na(`$c`)&substr(`$c`,nchar(`$c`),nchar(`$c`))==";",paste(`$a`,`$c`,`$d`,sep = " "),ifelse(!is.na(`$d`),paste(`$a`,`$d`,sep = " "),as.character(`$a`)))) %>%
select(ZA_UWAGI,name) %>%
mutate(name = str_replace(name,"(\\))(\\.$)","\\1"),
name = str_replace(name, "([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)","\\1")) %>%
group_by(ZA_UWAGI) %>%
mutate(name = paste(name,collapse = "|")) %>%
ungroup() %>%
unique()
do_podmiotowej2 <- marc_field_100 %>%
unique() %>%
inner_join(.,pbl_viaf,by = c("name" = "BN_name")) %>%
inner_join(.,PBL_tworcy,by = c("pbl_id"="TW_TWORCA_ID")) %>%
left_join(.,redaktorzy_dzialow,by = c("TW_DZ_DZIAL_ID"="DZ_DZIAL_ID")) %>%
select(ZA_UWAGI,TW_TWORCA_ID=pbl_id,TW_NAZWISKO,TW_IMIE,DZ_DZIAL_ID=TW_DZ_DZIAL_ID,DZ_NAZWA=DZ_NAZWA.x,redaktor_dzialu) %>%
mutate(RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)") %>%
unique()
###przypisanie redaktora na podstawie zbieżności fraz nazewnictwa osoby z 100 z twórcą pbl (dla tych, które nie zostały zmapowane na linii pbl-bn) - książki twórcy
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
filter(ZA_UWAGI %notin% do_podmiotowej1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej2$ZA_UWAGI)
#100
marc_field_100 <- podmiotowa_redaktorzy %>%
select(ZA_UWAGI,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(podmiotowa_redaktorzy$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
do_podmiotowej3 <- marc_field_100 %>%
select(ZA_UWAGI,`$a`) %>%
unique() %>%
mutate(`$a` = str_remove(`$a`,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)")) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(`$a`,collapse = "|")) %>%
ungroup() %>%
unique() %>%
mutate(TW_NAZWISKO = ifelse(grepl("\\|",`$a`), str_replace_all(str_remove_all(`$a`,","),"\\|",", "),
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\1"),as.character(`$a`))),
TW_IMIE = ifelse(grepl("\\|",`$a`),"*",
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\3"),"*")),
nazwa = str_replace_all(str_to_lower(paste(TW_NAZWISKO,TW_IMIE,sep = "")), "\\W", "")) %>%
select(ZA_UWAGI,TW_NAZWISKO,TW_IMIE,nazwa) %>%
inner_join(.,PBL_tworcy_podm %>% select(TW_TWORCA_ID,DZ_DZIAL_ID=TW_DZ_DZIAL_ID,DZ_NAZWA,nazwa),by="nazwa")
do_podmiotowej3$same <- cumsum(!duplicated(do_podmiotowej3[1:4]))
do_podmiotowej3 <- do_podmiotowej3 %>%
arrange(ZA_UWAGI,TW_NAZWISKO,TW_IMIE,nazwa,TW_TWORCA_ID)
do_podmiotowej3 <- do_podmiotowej3[!duplicated(do_podmiotowej3$same),] %>%
mutate(DZ_DZIAL_ID = as.integer(DZ_DZIAL_ID),
RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)") %>%
inner_join(.,redaktorzy_dzialow %>% select(DZ_DZIAL_ID,redaktor_dzialu),by="DZ_DZIAL_ID") %>%
select(names(do_podmiotowej1))
###przypisanie autorów podmiotowej do literatur i przypisanie do redaktorów na podstawie kodu literatury z pola X080 i tworzenie nowych twórców na podstawie pola 100
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
filter(ZA_UWAGI %notin% do_podmiotowej1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej2$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej3$ZA_UWAGI)
podmiotowa_redaktorzy <- sqldf("select *
from podmiotowa_redaktorzy a
join BN_PBL_lista_literatur b on a.X080 like ('%'||b.ukd_ogolne||'%')")
###dodawanie nazewnictw nowych twórców
#100
marc_field_100 <- podmiotowa_redaktorzy %>%
select(ZA_UWAGI,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(podmiotowa_redaktorzy$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
marc_field_100 <- marc_field_100 %>%
select(ZA_UWAGI,`$a`) %>%
unique() %>%
mutate(`$a` = str_remove(`$a`,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)")) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(`$a`,collapse = "|")) %>%
ungroup() %>%
unique() %>%
mutate(TW_NAZWISKO = ifelse(grepl("\\|",`$a`), str_replace_all(str_remove_all(`$a`,","),"\\|",", "),
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\1"),as.character(`$a`))),
TW_IMIE = ifelse(grepl("\\|",`$a`),"*",
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\3"),"*"))) %>%
select(ZA_UWAGI,TW_NAZWISKO,TW_IMIE)
#join na podstawie identycznego id
podmiotowa_redaktorzy <- podmiotowa_redaktorzy %>%
left_join(.,marc_field_100,by="ZA_UWAGI") %>%
mutate(pbl_nazwa = as.character(pbl_nazwa)) %>%
mutate(DZ_DZIAL_ID = ifelse(nazwa_prosta=="polsk"&substr(pbl_nazwa,nchar(pbl_nazwa),nchar(pbl_nazwa))!=substr(TW_NAZWISKO,1,1),NA,as.integer(pbl_id))) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
count <- as.data.frame(table(podmiotowa_redaktorzy$ZA_UWAGI))
podmiotowa_redaktorzy <- merge(podmiotowa_redaktorzy,count,by.x = "ZA_UWAGI",by.y = "Var1") %>%
mutate(dlugosc = nchar(ukd_ogolne)) %>%
arrange(-Freq,ZA_UWAGI,-dlugosc,pbl_id)
podmiotowa_redaktorzy$same <- cumsum(!duplicated(podmiotowa_redaktorzy[1]))
do_podmiotowej4 <- podmiotowa_redaktorzy[!duplicated(podmiotowa_redaktorzy$same),] %>%
mutate(TW_TWORCA_ID = NA) %>%
rename(DZ_NAZWA = pbl_nazwa) %>%
select(ZA_UWAGI,TW_TWORCA_ID,TW_NAZWISKO,TW_IMIE,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
mutate(RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)")
###przypisanie autorów podmiotowej do literatur i przypisanie do redaktorów na podstawie literatury z pola 655 i tworzenie nowych twórców na podstawie pola 100
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
filter(ZA_UWAGI %notin% do_podmiotowej1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej2$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej3$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej4$ZA_UWAGI)
#655
marc_field_655 <- podmiotowa_redaktorzy %>%
select(ZA_UWAGI,X655)%>%
filter(X655!="") %>%
mutate(X655=str_replace_all(X655,"(^|\\|)","~\\1")) %>%
cSplit(.,"X655",sep = "~",direction = "long") %>%
filter(X655!="") %>%
mutate(X655=str_remove_all(X655,"^\\|")) %>%
mutate(indicator = str_replace_all(X655,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(podmiotowa_redaktorzy$X655,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_655)[1]))
colnames(empty_table) <-subfield_list
marc_field_655<-cbind(marc_field_655,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_655$X655 <- str_replace(marc_field_655$X655,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_655[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_655$X655),str_replace_all(gsub(string,"\\3",marc_field_655$X655),"\\${2}.", "~"),NA)
}
marc_field_655 <- marc_field_655 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
marc_field_655 <- sqldf("select *
from marc_field_655 a
left join PBL_hasla_osobowe b on a.`$a` like ('%'||b.nazwa||'%')")
###dodawanie nazewnictw nowych twórców
#100
marc_field_100 <- podmiotowa_redaktorzy %>%
select(ZA_UWAGI,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(podmiotowa_redaktorzy$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
marc_field_100 <- marc_field_100 %>%
select(ZA_UWAGI,`$a`) %>%
unique() %>%
mutate(`$a` = str_remove(`$a`,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)")) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(`$a`,collapse = "|")) %>%
ungroup() %>%
unique() %>%
mutate(TW_NAZWISKO = ifelse(grepl("\\|",`$a`), str_replace_all(str_remove_all(`$a`,","),"\\|",", "),
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\1"),as.character(`$a`))),
TW_IMIE = ifelse(grepl("\\|",`$a`),"*",
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\3"),"*"))) %>%
select(ZA_UWAGI,TW_NAZWISKO,TW_IMIE)
#join na podstawie identycznego id
marc_field_655 <- marc_field_655 %>%
left_join(.,marc_field_100,by="ZA_UWAGI") %>%
mutate(DZ_DZIAL_ID = ifelse(nazwa=="polsk"&substr(DZ_NAZWA,nchar(DZ_NAZWA),nchar(DZ_NAZWA))!=substr(TW_NAZWISKO,1,1),NA,as.integer(DZ_DZIAL_ID))) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_655$same <- cumsum(!duplicated(marc_field_655[1]))
do_podmiotowej5 <- marc_field_655[!duplicated(marc_field_655$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,TW_NAZWISKO,TW_IMIE,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)") %>%
select(names(marc_field_600))
###przypisanie autorów podmiotowej do literatur i przypisanie do redaktorów na podstawie literatury z pola 655 i tworzenie nowych twórców na podstawie pola 100
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
filter(ZA_UWAGI %notin% do_podmiotowej1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej2$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej3$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej4$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej5$ZA_UWAGI)
#650
marc_field_650 <- podmiotowa_redaktorzy %>%
select(ZA_UWAGI,X650)%>%
filter(X650!="") %>%
mutate(X650=str_replace_all(X650,"(^|\\|)","~\\1")) %>%
cSplit(.,"X650",sep = "~",direction = "long") %>%
filter(X650!="") %>%
mutate(X650=str_remove_all(X650,"^\\|")) %>%
mutate(indicator = str_replace_all(X650,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(podmiotowa_redaktorzy$X650,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_650)[1]))
colnames(empty_table) <-subfield_list
marc_field_650<-cbind(marc_field_650,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_650$X650 <- str_replace(marc_field_650$X650,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_650[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_650$X650),str_replace_all(gsub(string,"\\3",marc_field_650$X650),"\\${2}.", "~"),NA)
}
marc_field_650 <- marc_field_650 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
marc_field_650 <- sqldf("select *
from marc_field_650 a
left join PBL_hasla_osobowe b on a.`$a` like ('%'||b.nazwa||'%')") %>%
left_join(.,marc_field_100,by="ZA_UWAGI") %>%
mutate(DZ_DZIAL_ID = ifelse(nazwa=="polsk"&substr(DZ_NAZWA,nchar(DZ_NAZWA),nchar(DZ_NAZWA))!=substr(TW_NAZWISKO,1,1),NA,as.integer(DZ_DZIAL_ID))) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_650$same <- cumsum(!duplicated(marc_field_650[1]))
do_podmiotowej6 <- marc_field_650[!duplicated(marc_field_650$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,TW_NAZWISKO,TW_IMIE,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)") %>%
select(names(marc_field_600))
#co zostało do podmiotowej?
podmiotowa_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
filter(ZA_UWAGI %notin% do_podmiotowej1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej2$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej3$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej4$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej5$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_podmiotowej6$ZA_UWAGI)
#naddatek przypisać Marcie jako podmiotową bez twórców i czy_automatycznie <- nie
do_podmiotowej7 <- podmiotowa_redaktorzy %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
DZ_DZIAL_ID = NA,
DZ_NAZWA = NA,
RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)",
redaktor_dzialu = "MARTAKx") %>%
select(names(do_podmiotowej5))
#trzeba zaktualizować w bn_ok, że teraz to nie są automatyczne
lista_do_przepisania <- do_podmiotowej7$ZA_UWAGI
bn_ok$czy_automatycznie[bn_ok$ZA_UWAGI %in% lista_do_przepisania] <- "nie"
#połączenie przydziału podmiotowych w jeden plik
do_podmiotowej <- rbind(do_podmiotowej1,do_podmiotowej2,do_podmiotowej3,do_podmiotowej4,do_podmiotowej5,do_podmiotowej6,do_podmiotowej7)
#przypisanie antologii do Tomka i do literatur na podstawie 080
antologie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki == "antologia")
PBL_dzialy_antologie <- PBL_dzialy_path %>%
filter(grepl("antolog",DZ_NAZWA,ignore.case = TRUE)) %>%
left_join(.,redaktorzy_dzialow,by="DZ_DZIAL_ID") %>%
select(DZ_DZIAL_ID,DZ_NAZWA=DZ_NAZWA.x,redaktor_dzialu) %>%
mutate(redaktor_dzialu = ifelse(is.na(redaktor_dzialu),"TOMASZ",as.character(redaktor_dzialu)))
PBL_dzialy_antologie <- sqldf("select *
from PBL_dzialy_antologie a
left join (select c.ukd_ogolne,c.nazwa_prosta,c.pbl_id,c.pbl_nazwa,c.pbl_id_literatury,c.pbl_literatura from BN_PBL_lista_literatur c) b on a.DZ_NAZWA like ('%'||b.nazwa_prosta||'%')") %>%
mutate(ukd_ogolne = ifelse(DZ_DZIAL_ID==146,"821.162.1",as.character(ukd_ogolne)),
nazwa_prosta = ifelse(DZ_DZIAL_ID==146,"polsk",as.character(nazwa_prosta))) %>%
filter(!is.na(ukd_ogolne)) %>%
filter(DZ_DZIAL_ID!=744) %>%
select(1:5)
antologie_redaktorzy <- sqldf("select *
from antologie_redaktorzy a
join PBL_dzialy_antologie b on a.X080 like ('%'||b.ukd_ogolne||'%')")
count <- as.data.frame(table(antologie_redaktorzy$ZA_UWAGI))
antologie_redaktorzy <- merge(antologie_redaktorzy,count,by.x = "ZA_UWAGI",by.y = "Var1") %>%
mutate(dlugosc = nchar(ukd_ogolne)) %>%
arrange(-Freq,ZA_UWAGI,-dlugosc,DZ_DZIAL_ID)
antologie_redaktorzy$same <- cumsum(!duplicated(antologie_redaktorzy[1]))
do_antologii1 <- antologie_redaktorzy[!duplicated(antologie_redaktorzy$same),] %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA) %>%
select(ZA_UWAGI,TW_TWORCA_ID,TW_NAZWISKO,TW_IMIE,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
mutate(RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym")
#przypisanie antologii do Tomka i do literatur na podstawie 665
antologie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki == "antologia") %>%
filter(ZA_UWAGI %notin% do_antologii1$ZA_UWAGI)
marc_field_655 <- antologie_redaktorzy %>%
select(ZA_UWAGI,X655)%>%
filter(X655!="") %>%
mutate(X655=str_replace_all(X655,"(^|\\|)","~\\1")) %>%
cSplit(.,"X655",sep = "~",direction = "long") %>%
filter(X655!="") %>%
mutate(X655=str_remove_all(X655,"^\\|")) %>%
mutate(indicator = str_replace_all(X655,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(antologie_redaktorzy$X655,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_655)[1]))
colnames(empty_table) <-subfield_list
marc_field_655<-cbind(marc_field_655,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_655$X655 <- str_replace(marc_field_655$X655,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_655[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_655$X655),str_replace_all(gsub(string,"\\3",marc_field_655$X655),"\\${2}.", "~"),NA)
}
marc_field_655 <- marc_field_655 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
marc_field_655 <- sqldf("select *
from marc_field_655 a
left join PBL_dzialy_antologie b on a.`$a` like ('%'||b.nazwa_prosta||'%')") %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_655$same <- cumsum(!duplicated(marc_field_655[1]))
do_antologii2 <- marc_field_655[!duplicated(marc_field_655$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym") %>%
select(names(do_antologii1))
#przypisanie antologii do Tomka i do literatur na podstawie 665
antologie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki == "antologia") %>%
filter(ZA_UWAGI %notin% do_antologii1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_antologii2$ZA_UWAGI)
marc_field_650 <- antologie_redaktorzy %>%
select(ZA_UWAGI,X650)%>%
filter(X650!="") %>%
mutate(X650=str_replace_all(X650,"(^|\\|)","~\\1")) %>%
cSplit(.,"X650",sep = "~",direction = "long") %>%
filter(X650!="") %>%
mutate(X650=str_remove_all(X650,"^\\|")) %>%
mutate(indicator = str_replace_all(X650,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(antologie_redaktorzy$X650,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_650)[1]))
colnames(empty_table) <-subfield_list
marc_field_650<-cbind(marc_field_650,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_650$X650 <- str_replace(marc_field_650$X650,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_650[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_650$X650),str_replace_all(gsub(string,"\\3",marc_field_650$X650),"\\${2}.", "~"),NA)
}
marc_field_650 <- marc_field_650 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
marc_field_650 <- sqldf("select *
from marc_field_650 a
left join PBL_dzialy_antologie b on a.`$a` like ('%'||b.nazwa_prosta||'%')") %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_650$same <- cumsum(!duplicated(marc_field_650[1]))
do_antologii3 <- marc_field_650[!duplicated(marc_field_650$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym") %>%
select(names(do_antologii1))
#reszta antologii bez działu po prostu przypisana do Tomka
antologie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki == "antologia") %>%
filter(ZA_UWAGI %notin% do_antologii1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_antologii2$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_antologii3$ZA_UWAGI)
do_antologii4 <- antologie_redaktorzy %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
DZ_DZIAL_ID = NA,
DZ_NAZWA = NA,
RZ_RODZAJ_ID = 21,
RZ_NAZWA = "książka w haśle rzeczowym",
redaktor_dzialu = "TOMASZ") %>%
select(names(do_antologii1))
do_antologii <- rbind(do_antologii1,do_antologii2,do_antologii3,do_antologii4)
###przypisanie redaktora do współwydań na podstawie osoby z 245 jako twórcy (autora) (tabela pbl-bn-viaf)- książki twórcy
wspolwydanie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="współwydanie")
do_wspolwydania1 <- wspolwydanie_redaktorzy %>%
select(ZA_UWAGI,X245) %>%
mutate(X245 = str_extract(X245, "(?<=\\/\\$c)(.*?)(?= ;|$)"),
X245 = str_remove(X245,"\\.$"),
X245 = str_remove(X245,"\\["),
X245 = str_remove(X245,"\\]"),
nazwisko = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),as.character(X245),str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\3")),
imie = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),"*",str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\1")),
name = paste(nazwisko,imie,sep = ", ")) %>%
inner_join(.,pbl_viaf,by = c("name" = "BN_name")) %>%
left_join(.,PBL_tworcy,by = c("pbl_id"="TW_TWORCA_ID")) %>%
left_join(.,redaktorzy_dzialow,by = c("TW_DZ_DZIAL_ID"="DZ_DZIAL_ID")) %>%
select(ZA_UWAGI,TW_TWORCA_ID=pbl_id,TW_NAZWISKO,TW_IMIE,DZ_DZIAL_ID=TW_DZ_DZIAL_ID,DZ_NAZWA=DZ_NAZWA.x,redaktor_dzialu) %>%
mutate(RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)") %>%
unique()
###przypisanie redaktora na podstawie zbieżności fraz nazewnictwa osoby z 245 z twórcą pbl (dla tych, które nie zostały zmapowane na linii pbl-bn) - książki twórcy
wspolwydanie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="współwydanie") %>%
filter(ZA_UWAGI %notin% do_wspolwydania1$ZA_UWAGI)
do_wspolwydania2 <- wspolwydanie_redaktorzy %>%
select(ZA_UWAGI,X245) %>%
mutate(X245 = str_extract(X245, "(?<=\\/\\$c)(.*?)(?= ;|$)"),
X245 = str_remove(X245,"\\.$"),
X245 = str_remove(X245,"\\["),
X245 = str_remove(X245,"\\]"),
nazwisko = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),as.character(X245),str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\3")),
imie = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),"*",str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\1")),
name = paste(nazwisko,imie,sep = ", "),
nazwa = str_replace_all(str_to_lower(name), "\\W", "")) %>%
inner_join(.,PBL_tworcy_podm %>% select(TW_TWORCA_ID,TW_NAZWISKO,TW_IMIE,DZ_DZIAL_ID=TW_DZ_DZIAL_ID,DZ_NAZWA,nazwa),by="nazwa")
do_wspolwydania2$same <- cumsum(!duplicated(do_wspolwydania2[1:4]))
do_wspolwydania2 <- do_wspolwydania2 %>%
arrange(ZA_UWAGI,nazwisko,imie,nazwa,TW_TWORCA_ID)
do_wspolwydania2 <- do_wspolwydania2[!duplicated(do_wspolwydania2$same),] %>%
mutate(DZ_DZIAL_ID = as.integer(DZ_DZIAL_ID),
RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)") %>%
inner_join(.,redaktorzy_dzialow %>% select(DZ_DZIAL_ID,redaktor_dzialu),by="DZ_DZIAL_ID") %>%
select(names(do_wspolwydania1))
###przypisanie autorów podmiotowej do literatur i przypisanie do redaktorów na podstawie kodu literatury z pola X080 i tworzenie nowych twórców na podstawie pola 245
wspolwydanie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="współwydanie") %>%
filter(ZA_UWAGI %notin% do_wspolwydania1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania2$ZA_UWAGI)
wspolwydanie_redaktorzy <- sqldf("select *
from wspolwydanie_redaktorzy a
join BN_PBL_lista_literatur b on a.X080 like ('%'||b.ukd_ogolne||'%')")
do_wspolwydania3 <- wspolwydanie_redaktorzy %>%
select(ZA_UWAGI,X245,pbl_id,pbl_nazwa,redaktor_dzialu,pbl_id_literatury,pbl_literatura,nazwa_prosta,ukd_ogolne) %>%
mutate(X245 = str_extract(X245, "(?<=\\/\\$c)(.*?)(?= ;|$)"),
X245 = str_remove(X245,"\\.$"),
X245 = str_remove(X245,"\\["),
X245 = str_remove(X245,"\\]"),
nazwisko = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),as.character(X245),str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\3")),
imie = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),"*",str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\1")),
name = paste(nazwisko,imie,sep = ", ")) %>%
mutate(pbl_nazwa = as.character(pbl_nazwa)) %>%
mutate(DZ_DZIAL_ID = ifelse(nazwa_prosta=="polsk"&substr(pbl_nazwa,nchar(pbl_nazwa),nchar(pbl_nazwa))!=substr(nazwisko,1,1),NA,as.integer(pbl_id))) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
count <- as.data.frame(table(do_wspolwydania3$ZA_UWAGI))
do_wspolwydania3 <- merge(do_wspolwydania3,count,by.x = "ZA_UWAGI",by.y = "Var1") %>%
mutate(dlugosc = nchar(ukd_ogolne)) %>%
arrange(-Freq,ZA_UWAGI,-dlugosc,pbl_id)
do_wspolwydania3$same <- cumsum(!duplicated(do_wspolwydania3[1]))
do_wspolwydania3 <- do_wspolwydania3[!duplicated(do_wspolwydania3$same),] %>%
mutate(TW_TWORCA_ID = NA) %>%
rename(DZ_NAZWA = pbl_nazwa,
TW_NAZWISKO = nazwisko,
TW_IMIE = imie) %>%
select(ZA_UWAGI,TW_TWORCA_ID,TW_NAZWISKO,TW_IMIE,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
mutate(RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)")
###przypisanie autorów podmiotowej do literatur i przypisanie do redaktorów na podstawie literatury z pola 655 i tworzenie nowych twórców na podstawie pola 245
wspolwydanie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="współwydanie") %>%
filter(ZA_UWAGI %notin% do_wspolwydania1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania2$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania3$ZA_UWAGI)
#655
marc_field_655 <- wspolwydanie_redaktorzy %>%
select(ZA_UWAGI,X655)%>%
filter(X655!="") %>%
mutate(X655=str_replace_all(X655,"(^|\\|)","~\\1")) %>%
cSplit(.,"X655",sep = "~",direction = "long") %>%
filter(X655!="") %>%
mutate(X655=str_remove_all(X655,"^\\|")) %>%
mutate(indicator = str_replace_all(X655,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(wspolwydanie_redaktorzy$X655,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_655)[1]))
colnames(empty_table) <-subfield_list
marc_field_655<-cbind(marc_field_655,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_655$X655 <- str_replace(marc_field_655$X655,subfield_list_char[i],"|\\1")
}
if (nrow(marc_field_655)>0) {
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_655[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_655$X655),str_replace_all(gsub(string,"\\3",marc_field_655$X655),"\\${2}.", "~"),NA)
}
marc_field_655 <- marc_field_655 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
marc_field_655 <- sqldf("select *
from marc_field_655 a
left join PBL_hasla_osobowe b on a.`$a` like ('%'||b.nazwa||'%')")
###dodawanie nazewnictw nowych twórców na podstawie 245
marc_field_245 <- wspolwydanie_redaktorzy %>%
select(ZA_UWAGI,X245) %>%
mutate(X245 = str_extract(X245, "(?<=\\/\\$c)(.*?)(?= ;|$)"),
X245 = str_remove(X245,"\\.$"),
X245 = str_remove(X245,"\\["),
X245 = str_remove(X245,"\\]"),
nazwisko = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),as.character(X245),str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\3")),
imie = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),"*",str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\1")),
name = paste(nazwisko,imie,sep = ", "))
#join na podstawie identycznego id
marc_field_655 <- marc_field_655 %>%
left_join(.,marc_field_245,by="ZA_UWAGI") %>%
mutate(DZ_DZIAL_ID = ifelse(nazwa=="polsk"&substr(DZ_NAZWA,nchar(DZ_NAZWA),nchar(DZ_NAZWA))!=substr(nazwisko,1,1),NA,as.integer(DZ_DZIAL_ID))) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_655$same <- cumsum(!duplicated(marc_field_655[1]))
do_wspolwydania4 <- marc_field_655[!duplicated(marc_field_655$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,TW_NAZWISKO=nazwisko,TW_IMIE=imie,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)") %>%
select(names(do_wspolwydania3))
} else {
marc_field_245 <- wspolwydanie_redaktorzy %>%
select(ZA_UWAGI,X245) %>%
mutate(X245 = str_extract(X245, "(?<=\\/\\$c)(.*?)(?= ;|$)"),
X245 = str_remove(X245,"\\.$"),
X245 = str_remove(X245,"\\["),
X245 = str_remove(X245,"\\]"),
nazwisko = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),as.character(X245),str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\3")),
imie = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),"*",str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\1")),
name = paste(nazwisko,imie,sep = ", "))
do_wspolwydania4 <- data.frame(stringsAsFactors = FALSE)
}
###przypisanie autorów podmiotowej do literatur i przypisanie do redaktorów na podstawie literatury z pola 650 i tworzenie nowych twórców na podstawie pola 245
wspolwydanie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="współwydanie") %>%
filter(ZA_UWAGI %notin% do_wspolwydania1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania2$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania3$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania4$ZA_UWAGI)
#650
if (max(nchar(wspolwydanie_redaktorzy$X650))>0) {
marc_field_650 <- wspolwydanie_redaktorzy %>%
select(ZA_UWAGI,X650)%>%
filter(X650!="") %>%
mutate(X650=str_replace_all(X650,"(^|\\|)","~\\1")) %>%
cSplit(.,"X650",sep = "~",direction = "long") %>%
filter(X650!="") %>%
mutate(X650=str_remove_all(X650,"^\\|")) %>%
mutate(indicator = str_replace_all(X650,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(wspolwydanie_redaktorzy$X650,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_650)[1]))
colnames(empty_table) <-subfield_list
marc_field_650<-cbind(marc_field_650,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_650$X650 <- str_replace(marc_field_650$X650,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_650[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_650$X650),str_replace_all(gsub(string,"\\3",marc_field_650$X650),"\\${2}.", "~"),NA)
}
marc_field_650 <- marc_field_650 %>%
select(ZA_UWAGI,`$a`) %>%
unique()
marc_field_650 <- sqldf("select *
from marc_field_650 a
left join PBL_hasla_osobowe b on a.`$a` like ('%'||b.nazwa||'%')") %>%
left_join(.,marc_field_245,by="ZA_UWAGI") %>%
mutate(DZ_DZIAL_ID = ifelse(nazwa=="polsk"&substr(DZ_NAZWA,nchar(DZ_NAZWA),nchar(DZ_NAZWA))!=substr(nazwisko,1,1),NA,as.integer(DZ_DZIAL_ID))) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
arrange(ZA_UWAGI,DZ_DZIAL_ID)
marc_field_650$same <- cumsum(!duplicated(marc_field_650[1]))
do_wspolwydania5 <- marc_field_650[!duplicated(marc_field_650$same),] %>%
select(ZA_UWAGI,DZ_DZIAL_ID,DZ_NAZWA,TW_NAZWISKO=nazwisko,TW_IMIE=imie,redaktor_dzialu) %>%
filter(!is.na(DZ_DZIAL_ID)) %>%
mutate(TW_TWORCA_ID = NA,
RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)") %>%
select(names(do_wspolwydania4))
} else {
do_wspolwydania5 <- do_wspolwydania1[0,]
}
#co zostało do współwydania?
wspolwydanie_redaktorzy <- bn_ok %>%
filter(rodzaj_ksiazki=="współwydanie") %>%
filter(ZA_UWAGI %notin% do_wspolwydania1$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania2$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania3$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania4$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% do_wspolwydania5$ZA_UWAGI)
#naddatek przypisać Marcie jako podmiotową bez twórców i czy_automatycznie <- nie
do_wspolwydania6 <- wspolwydanie_redaktorzy %>%
mutate(TW_TWORCA_ID = NA,
TW_NAZWISKO = NA,
TW_IMIE = NA,
DZ_DZIAL_ID = NA,
DZ_NAZWA = NA,
RZ_RODZAJ_ID = 1,
RZ_NAZWA = "książka twórcy (podmiotowa)",
redaktor_dzialu = "MARTAKx") %>%
select(names(do_wspolwydania5))
#trzeba zaktualizować w bn_ok, że teraz to nie są automatyczne
lista_do_przepisania <- do_wspolwydania6$ZA_UWAGI
bn_ok$czy_automatycznie[bn_ok$ZA_UWAGI %in% lista_do_przepisania] <- "nie"
#połączenie przydziału współwydań w jeden plik
do_wspolwydania <- rbind(do_wspolwydania1,do_wspolwydania2,do_wspolwydania3,do_wspolwydania4,do_wspolwydania5,do_wspolwydania6)
#połączenie przydziałów w jeden plik (z wykluczeniem współwydania, bo ono idzie po za_uwagi)
redaktorzy_zapisow <- rbind(do_podmiotowej,do_przedmiotowej,do_antologii,do_wspolwydania)
#połączenie przypisania ze zbiorem
bn_ok <- bn_ok %>%
left_join(.,redaktorzy_zapisow,by="ZA_UWAGI") %>%
mutate(redaktor_dzialu = ifelse(is.na(DZ_NAZWA),as.character(redaktor_dzialu),
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - B","PAULINA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - G","MARTAK",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - L","BEATAK",
ifelse(DZ_NAZWA=="Literatura współczesna (utwory anonimowe i ulotne)","ANIA",
ifelse(DZ_NAZWA=="Utwory anonimowe i ulotne","ANIA",
ifelse(DZ_NAZWA=="Utwory anonimowe i ulotne (epoka nieznana)","ANIA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - N","GOSIA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - O","IZA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - Q","IZA",
ifelse(DZ_NAZWA=="Literatura brytyjska i irlandzka","EWA",
ifelse(DZ_NAZWA=="Utwory anonimowe (brytyjska i irlandzka)","EWA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - U","PAULINA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - X","PAULINA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - V","PAULINA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - Y","PAULINA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - C","GOSIA",
ifelse(DZ_NAZWA=="Hasła osobowe (literatura polska) - D","GOSIA",as.character(redaktor_dzialu))))))))))))))))))))
#ujednolicenie literatury dla kilku zapisów nowego twórcy
kilka_literatur_nowego_tworcy <- bn_ok %>%
select(id,TW_TWORCA_ID,TW_NAZWISKO,TW_IMIE,DZ_DZIAL_ID,DZ_NAZWA,redaktor_dzialu) %>%
filter(is.na(TW_TWORCA_ID)&!is.na(TW_NAZWISKO)) %>%
select(-TW_TWORCA_ID) %>%
arrange(TW_NAZWISKO,TW_IMIE) %>%
group_by_at(vars(2:3)) %>%
mutate(unikatowy_dzial = paste(unique(DZ_DZIAL_ID),collapse = "|"),
DZ_DZIAL_ID = paste(DZ_DZIAL_ID,collapse = "|"),
DZ_NAZWA = paste(DZ_NAZWA,collapse = "|"),
redaktor_dzialu = paste(redaktor_dzialu,collapse = "|"),
id = paste(id,collapse = "|")) %>%
ungroup() %>%
unique() %>%
filter(grepl("\\|",unikatowy_dzial)) %>%
select(-unikatowy_dzial)
if(nrow(kilka_literatur_nowego_tworcy)>0) {
kilka_literatur_nowego_tworcy <- kilka_literatur_nowego_tworcy %>%
mutate(id_grupy = 1:nrow(.)) %>%
cSplit(.,c("id","DZ_DZIAL_ID","DZ_NAZWA","redaktor_dzialu"),sep = "|",direction = "long")
kilka_literatur_nowego_tworcy[,2:7][duplicated(kilka_literatur_nowego_tworcy$id_grupy),] <- NA
kilka_literatur_nowego_tworcy <- fill_(kilka_literatur_nowego_tworcy, names(kilka_literatur_nowego_tworcy))
#zaktualizowanie zbioru podmiotowych o ujednolicone działy dla nowych twórców
x <- 1:length(kilka_literatur_nowego_tworcy$id)
for (i in x) {
progress(match(i,x), max.value = length(x))
bn_ok$DZ_DZIAL_ID[bn_ok$id==kilka_literatur_nowego_tworcy$id[i]] <- kilka_literatur_nowego_tworcy$DZ_DZIAL_ID[i]
bn_ok$DZ_NAZWA[bn_ok$id==kilka_literatur_nowego_tworcy$id[i]] <- as.character(kilka_literatur_nowego_tworcy$DZ_NAZWA)[i]
bn_ok$redaktor_dzialu[bn_ok$id==kilka_literatur_nowego_tworcy$id[i]] <- as.character(kilka_literatur_nowego_tworcy$redaktor_dzialu)[i]
}
}
#jeśli nie ma działu lub rodzaju zapisu, to wpisać id i nazwę do ustalenia
bn_ok <- bn_ok %>%
mutate(DZ_DZIAL_ID =ifelse(is.na(DZ_DZIAL_ID),0,as.integer(DZ_DZIAL_ID)),
DZ_NAZWA = ifelse(is.na(DZ_NAZWA),"-- do ustalenia --",as.character(DZ_NAZWA)),
RZ_RODZAJ_ID =ifelse(is.na(RZ_RODZAJ_ID),0,as.integer(RZ_RODZAJ_ID)),
RZ_NAZWA = ifelse(is.na(RZ_NAZWA),"-- do ustalenia --",as.character(RZ_NAZWA)))
#usunięcie nadwyżki z książek z działów IH
slowniki_jezykowe_zle <- bn_ok %>%
filter(DZ_NAZWA=="Słowniki językowe") %>%
filter(!grepl("słownik",X655,ignore.case = TRUE))
slowniki_biograficzne_zle <- bn_ok %>%
filter(DZ_NAZWA=="Słowniki biograficzne") %>%
filter(!(grepl("Słownik biograficzny|Biografia",X655)&(grepl("pisarz|litera|aktor|scenograf|nauczyciel|akademi|nauk|filolog|kryty|lit\\.",X655,ignore.case = TRUE)|grepl("pisarz|litera|aktor|scenograf|nauczyciel|akademi|nauk|filolog|kryty|lit\\.",X650,ignore.case = TRUE))))
bn_ok <- bn_ok %>%
filter(ZA_UWAGI %notin% slowniki_jezykowe_zle$ZA_UWAGI) %>%
filter(ZA_UWAGI %notin% slowniki_biograficzne_zle$ZA_UWAGI)
chunk11 <- bn_ok
#bezpiecznik - sprawdź, czy rozkład jest niekontrowersyjny
#bez automatu
bn_ok <- chunk11
count <- as.data.frame(table(bn_ok$redaktor_dzialu,bn_ok$czy_automatycznie)) %>%
filter(Var2=="nie") %>%
arrange(-Freq)
#ile książek ma automat
count2 <- as.data.frame(table(bn_ok$czy_automatycznie))
#realne statystyki po podmiotowej
# test <- bn_ok %>%
# left_join(out %>% select(rekord_BN,pracownik),by=c("ZA_UWAGI"="rekord_BN")) %>%
# mutate(pracownik = ifelse(is.na(pracownik),as.character(redaktor_dzialu),as.character(pracownik)),
# pracownik = str_replace(pracownik,"(^.*?)(\\_.*$)","\\1"))
#
# count3 <- as.data.frame(table(test$pracownik)) %>%
# arrange(-Freq)
#
# count4 <- as.data.frame(table(test$pracownik,test$DZ_NAZWA)) %>%
# filter(Var1=="EWA"&Freq>0) %>%
# arrange(-Freq)
bn_ok <- chunk11
data <- bn_ok %>%
filter(rodzaj_ksiazki=="podmiotowa") %>%
mutate(redaktor_dzialu = paste(redaktor_dzialu,"_podm",sep = ""))
#uwolnienie kolumn z danymi z bn i przetworzenie do PBL
#1: za_uwagi, rz_nazwa, za_ro_rok, za_type, rz_rodzaj_id, tw_tworca_id, tw_nazwisko, tw_imie, dz_dzial_id, dz_nazwa, redaktor_dzialu
pola_pbl <- data %>%
select(ZA_UWAGI, RZ_NAZWA, ZA_RO_ROK = rok, RZ_RODZAJ_ID, TW_TWORCA_ID, TW_NAZWISKO, TW_IMIE, DZ_DZIAL_ID, DZ_NAZWA, redaktor_dzialu) %>%
mutate(ZA_TYPE = "KS")
#2: autor
BN_autor <- data %>%
select(X100,X245,ZA_UWAGI)
#pole 100
marc_field_100 <- BN_autor %>%
select(ZA_UWAGI,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(BN_autor$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
#pole 245
marc_field_245 <- BN_autor %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(BN_autor$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
if("$b" %in% colnames(marc_field_100)==TRUE) {
BN_autor <- marc_field_100 %>%
select(ZA_UWAGI,`$a`,`$b`) %>%
unique() %>%
mutate(`$a` = ifelse(!is.na(`$b`),paste(`$a`,`$b`,sep = " "),as.character(`$a`))) %>%
mutate(`$a` = str_remove(`$a`,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)")) %>%
unique() %>%
mutate(AM_NAZWISKO = ifelse(grepl("\\|",`$a`), str_replace_all(str_remove_all(`$a`,","),"\\|",", "),
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\1"),as.character(`$a`))),
AM_IMIE = ifelse(grepl("\\|",`$a`),"*",
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\3"),"*"))) %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE) %>%
left_join(.,marc_field_245,by="ZA_UWAGI") %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE, X245c = `$c`)
} else {
BN_autor <- marc_field_100 %>%
select(ZA_UWAGI,`$a`) %>%
unique() %>%
mutate(`$a` = str_remove(`$a`,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)")) %>%
unique() %>%
mutate(AM_NAZWISKO = ifelse(grepl("\\|",`$a`), str_replace_all(str_remove_all(`$a`,","),"\\|",", "),
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\1"),as.character(`$a`))),
AM_IMIE = ifelse(grepl("\\|",`$a`),"*",
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\3"),"*"))) %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE) %>%
left_join(.,marc_field_245,by="ZA_UWAGI") %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE, X245c = `$c`)
}
x <- 1:lengths(BN_autor[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
BN_autor$czy_nazwisko[i] <- grepl(BN_autor$AM_NAZWISKO[i],BN_autor$X245c[i])
BN_autor$czy_imie[i] <- grepl(BN_autor$AM_IMIE[i],BN_autor$X245c[i])
}
Progress: 1 on 8158 Progress: 2 on 8158 Progress: 3 on 8158 Progress: 4 on 8158 Progress: 5 on 8158 Progress: 6 on 8158 Progress: 7 on 8158 Progress: 8 on 8158 Progress: 9 on 8158 Progress: 10 on 8158 Progress: 11 on 8158 Progress: 12 on 8158 Progress: 13 on 8158 Progress: 14 on 8158 Progress: 15 on 8158 Progress: 16 on 8158 Progress: 17 on 8158 Progress: 18 on 8158 Progress: 19 on 8158 Progress: 20 on 8158 Progress: 21 on 8158 Progress: 22 on 8158 Progress: 23 on 8158 Progress: 24 on 8158 Progress: 25 on 8158 Progress: 26 on 8158 Progress: 27 on 8158 Progress: 28 on 8158 Progress: 29 on 8158 Progress: 30 on 8158 Progress: 31 on 8158 Progress: 32 on 8158 Progress: 33 on 8158 Progress: 34 on 8158 Progress: 35 on 8158 Progress: 36 on 8158 Progress: 37 on 8158 Progress: 38 on 8158 Progress: 39 on 8158 Progress: 40 on 8158 Progress: 41 on 8158 Progress: 42 on 8158 Progress: 43 on 8158 Progress: 44 on 8158 Progress: 45 on 8158 Progress: 46 on 8158 Progress: 47 on 8158 Progress: 48 on 8158 Progress: 49 on 8158 Progress: 50 on 8158 Progress: 51 on 8158 Progress: 52 on 8158 Progress: 53 on 8158 Progress: 54 on 8158 Progress: 55 on 8158 Progress: 56 on 8158 Progress: 57 on 8158 Progress: 58 on 8158 Progress: 59 on 8158 Progress: 60 on 8158 Progress: 61 on 8158 Progress: 62 on 8158 Progress: 63 on 8158 Progress: 64 on 8158 Progress: 65 on 8158 Progress: 66 on 8158 Progress: 67 on 8158 Progress: 68 on 8158 Progress: 69 on 8158 Progress: 70 on 8158 Progress: 71 on 8158 Progress: 72 on 8158 Progress: 73 on 8158 Progress: 74 on 8158 Progress: 75 on 8158 Progress: 76 on 8158 Progress: 77 on 8158 Progress: 78 on 8158 Progress: 79 on 8158 Progress: 80 on 8158 Progress: 81 on 8158 Progress: 82 on 8158 Progress: 83 on 8158 Progress: 84 on 8158 Progress: 85 on 8158 Progress: 86 on 8158 Progress: 87 on 8158 Progress: 88 on 8158 Progress: 89 on 8158 Progress: 90 on 8158 Progress: 91 on 8158 Progress: 92 on 8158 Progress: 93 on 8158 Progress: 94 on 8158 Progress: 95 on 8158 Progress: 96 on 8158 Progress: 97 on 8158 Progress: 98 on 8158 Progress: 99 on 8158 Progress: 100 on 8158 Progress: 101 on 8158 Progress: 102 on 8158 Progress: 103 on 8158 Progress: 104 on 8158 Progress: 105 on 8158 Progress: 106 on 8158 Progress: 107 on 8158 Progress: 108 on 8158 Progress: 109 on 8158 Progress: 110 on 8158 Progress: 111 on 8158 Progress: 112 on 8158 Progress: 113 on 8158 Progress: 114 on 8158 Progress: 115 on 8158 Progress: 116 on 8158 Progress: 117 on 8158 Progress: 118 on 8158 Progress: 119 on 8158 Progress: 120 on 8158 Progress: 121 on 8158 Progress: 122 on 8158 Progress: 123 on 8158 Progress: 124 on 8158 Progress: 125 on 8158 Progress: 126 on 8158 Progress: 127 on 8158 Progress: 128 on 8158 Progress: 129 on 8158 Progress: 130 on 8158 Progress: 131 on 8158 Progress: 132 on 8158 Progress: 133 on 8158 Progress: 134 on 8158 Progress: 135 on 8158 Progress: 136 on 8158 Progress: 137 on 8158 Progress: 138 on 8158 Progress: 139 on 8158 Progress: 140 on 8158 Progress: 141 on 8158 Progress: 142 on 8158 Progress: 143 on 8158 Progress: 144 on 8158 Progress: 145 on 8158 Progress: 146 on 8158 Progress: 147 on 8158 Progress: 148 on 8158 Progress: 149 on 8158 Progress: 150 on 8158 Progress: 151 on 8158 Progress: 152 on 8158 Progress: 153 on 8158 Progress: 154 on 8158 Progress: 155 on 8158 Progress: 156 on 8158 Progress: 157 on 8158 Progress: 158 on 8158 Progress: 159 on 8158 Progress: 160 on 8158 Progress: 161 on 8158 Progress: 162 on 8158 Progress: 163 on 8158 Progress: 164 on 8158 Progress: 165 on 8158 Progress: 166 on 8158 Progress: 167 on 8158 Progress: 168 on 8158 Progress: 169 on 8158 Progress: 170 on 8158 Progress: 171 on 8158 Progress: 172 on 8158 Progress: 173 on 8158 Progress: 174 on 8158 Progress: 175 on 8158 Progress: 176 on 8158 Progress: 177 on 8158 Progress: 178 on 8158 Progress: 179 on 8158 Progress: 180 on 8158 Progress: 181 on 8158 Progress: 182 on 8158 Progress: 183 on 8158 Progress: 184 on 8158 Progress: 185 on 8158 Progress: 186 on 8158 Progress: 187 on 8158 Progress: 188 on 8158 Progress: 189 on 8158 Progress: 190 on 8158 Progress: 191 on 8158 Progress: 192 on 8158 Progress: 193 on 8158 Progress: 194 on 8158 Progress: 195 on 8158 Progress: 196 on 8158 Progress: 197 on 8158 Progress: 198 on 8158 Progress: 199 on 8158 Progress: 200 on 8158 Progress: 201 on 8158 Progress: 202 on 8158 Progress: 203 on 8158 Progress: 204 on 8158 Progress: 205 on 8158 Progress: 206 on 8158 Progress: 207 on 8158 Progress: 208 on 8158 Progress: 209 on 8158 Progress: 210 on 8158 Progress: 211 on 8158 Progress: 212 on 8158 Progress: 213 on 8158 Progress: 214 on 8158 Progress: 215 on 8158 Progress: 216 on 8158 Progress: 217 on 8158 Progress: 218 on 8158 Progress: 219 on 8158 Progress: 220 on 8158 Progress: 221 on 8158 Progress: 222 on 8158 Progress: 223 on 8158 Progress: 224 on 8158 Progress: 225 on 8158 Progress: 226 on 8158 Progress: 227 on 8158 Progress: 228 on 8158 Progress: 229 on 8158 Progress: 230 on 8158 Progress: 231 on 8158 Progress: 232 on 8158 Progress: 233 on 8158 Progress: 234 on 8158 Progress: 235 on 8158 Progress: 236 on 8158 Progress: 237 on 8158 Progress: 238 on 8158 Progress: 239 on 8158 Progress: 240 on 8158 Progress: 241 on 8158 Progress: 242 on 8158 Progress: 243 on 8158 Progress: 244 on 8158 Progress: 245 on 8158 Progress: 246 on 8158 Progress: 247 on 8158 Progress: 248 on 8158 Progress: 249 on 8158 Progress: 250 on 8158 Progress: 251 on 8158 Progress: 252 on 8158 Progress: 253 on 8158 Progress: 254 on 8158 Progress: 255 on 8158 Progress: 256 on 8158 Progress: 257 on 8158 Progress: 258 on 8158 Progress: 259 on 8158 Progress: 260 on 8158 Progress: 261 on 8158 Progress: 262 on 8158 Progress: 263 on 8158 Progress: 264 on 8158 Progress: 265 on 8158 Progress: 266 on 8158 Progress: 267 on 8158 Progress: 268 on 8158 Progress: 269 on 8158 Progress: 270 on 8158 Progress: 271 on 8158 Progress: 272 on 8158 Progress: 273 on 8158 Progress: 274 on 8158 Progress: 275 on 8158 Progress: 276 on 8158 Progress: 277 on 8158 Progress: 278 on 8158 Progress: 279 on 8158 Progress: 280 on 8158 Progress: 281 on 8158 Progress: 282 on 8158 Progress: 283 on 8158 Progress: 284 on 8158 Progress: 285 on 8158 Progress: 286 on 8158 Progress: 287 on 8158 Progress: 288 on 8158 Progress: 289 on 8158 Progress: 290 on 8158 Progress: 291 on 8158 Progress: 292 on 8158 Progress: 293 on 8158 Progress: 294 on 8158 Progress: 295 on 8158 Progress: 296 on 8158 Progress: 297 on 8158 Progress: 298 on 8158 Progress: 299 on 8158 Progress: 300 on 8158 Progress: 301 on 8158 Progress: 302 on 8158 Progress: 303 on 8158 Progress: 304 on 8158 Progress: 305 on 8158 Progress: 306 on 8158 Progress: 307 on 8158 Progress: 308 on 8158 Progress: 309 on 8158 Progress: 310 on 8158 Progress: 311 on 8158 Progress: 312 on 8158 Progress: 313 on 8158 Progress: 314 on 8158 Progress: 315 on 8158 Progress: 316 on 8158 Progress: 317 on 8158 Progress: 318 on 8158 Progress: 319 on 8158 Progress: 320 on 8158 Progress: 321 on 8158 Progress: 322 on 8158 Progress: 323 on 8158 Progress: 324 on 8158 Progress: 325 on 8158 Progress: 326 on 8158 Progress: 327 on 8158 Progress: 328 on 8158 Progress: 329 on 8158 Progress: 330 on 8158 Progress: 331 on 8158 Progress: 332 on 8158 Progress: 333 on 8158 Progress: 334 on 8158 Progress: 335 on 8158 Progress: 336 on 8158 Progress: 337 on 8158 Progress: 338 on 8158 Progress: 339 on 8158 Progress: 340 on 8158 Progress: 341 on 8158 Progress: 342 on 8158 Progress: 343 on 8158 Progress: 344 on 8158 Progress: 345 on 8158 Progress: 346 on 8158 Progress: 347 on 8158 Progress: 348 on 8158 Progress: 349 on 8158 Progress: 350 on 8158 Progress: 351 on 8158 Progress: 352 on 8158 Progress: 353 on 8158 Progress: 354 on 8158 Progress: 355 on 8158 Progress: 356 on 8158 Progress: 357 on 8158 Progress: 358 on 8158 Progress: 359 on 8158 Progress: 360 on 8158 Progress: 361 on 8158 Progress: 362 on 8158 Progress: 363 on 8158 Progress: 364 on 8158 Progress: 365 on 8158 Progress: 366 on 8158 Progress: 367 on 8158 Progress: 368 on 8158 Progress: 369 on 8158 Progress: 370 on 8158 Progress: 371 on 8158 Progress: 372 on 8158 Progress: 373 on 8158 Progress: 374 on 8158 Progress: 375 on 8158 Progress: 376 on 8158 Progress: 377 on 8158 Progress: 378 on 8158 Progress: 379 on 8158 Progress: 380 on 8158 Progress: 381 on 8158 Progress: 382 on 8158 Progress: 383 on 8158 Progress: 384 on 8158 Progress: 385 on 8158 Progress: 386 on 8158 Progress: 387 on 8158 Progress: 388 on 8158 Progress: 389 on 8158 Progress: 390 on 8158 Progress: 391 on 8158 Progress: 392 on 8158 Progress: 393 on 8158 Progress: 394 on 8158 Progress: 395 on 8158 Progress: 396 on 8158 Progress: 397 on 8158 Progress: 398 on 8158 Progress: 399 on 8158 Progress: 400 on 8158 Progress: 401 on 8158 Progress: 402 on 8158 Progress: 403 on 8158 Progress: 404 on 8158 Progress: 405 on 8158 Progress: 406 on 8158 Progress: 407 on 8158 Progress: 408 on 8158 Progress: 409 on 8158 Progress: 410 on 8158 Progress: 411 on 8158 Progress: 412 on 8158 Progress: 413 on 8158 Progress: 414 on 8158 Progress: 415 on 8158 Progress: 416 on 8158 Progress: 417 on 8158 Progress: 418 on 8158 Progress: 419 on 8158 Progress: 420 on 8158 Progress: 421 on 8158 Progress: 422 on 8158 Progress: 423 on 8158 Progress: 424 on 8158 Progress: 425 on 8158 Progress: 426 on 8158 Progress: 427 on 8158 Progress: 428 on 8158 Progress: 429 on 8158 Progress: 430 on 8158 Progress: 431 on 8158 Progress: 432 on 8158 Progress: 433 on 8158 Progress: 434 on 8158 Progress: 435 on 8158 Progress: 436 on 8158 Progress: 437 on 8158 Progress: 438 on 8158 Progress: 439 on 8158 Progress: 440 on 8158 Progress: 441 on 8158 Progress: 442 on 8158 Progress: 443 on 8158 Progress: 444 on 8158 Progress: 445 on 8158 Progress: 446 on 8158 Progress: 447 on 8158 Progress: 448 on 8158 Progress: 449 on 8158 Progress: 450 on 8158 Progress: 451 on 8158 Progress: 452 on 8158 Progress: 453 on 8158 Progress: 454 on 8158 Progress: 455 on 8158 Progress: 456 on 8158 Progress: 457 on 8158 Progress: 458 on 8158 Progress: 459 on 8158 Progress: 460 on 8158 Progress: 461 on 8158 Progress: 462 on 8158 Progress: 463 on 8158 Progress: 464 on 8158 Progress: 465 on 8158 Progress: 466 on 8158 Progress: 467 on 8158 Progress: 468 on 8158 Progress: 469 on 8158 Progress: 470 on 8158 Progress: 471 on 8158 Progress: 472 on 8158 Progress: 473 on 8158 Progress: 474 on 8158 Progress: 475 on 8158 Progress: 476 on 8158 Progress: 477 on 8158 Progress: 478 on 8158 Progress: 479 on 8158 Progress: 480 on 8158 Progress: 481 on 8158 Progress: 482 on 8158 Progress: 483 on 8158 Progress: 484 on 8158 Progress: 485 on 8158 Progress: 486 on 8158 Progress: 487 on 8158 Progress: 488 on 8158 Progress: 489 on 8158 Progress: 490 on 8158 Progress: 491 on 8158 Progress: 492 on 8158 Progress: 493 on 8158 Progress: 494 on 8158 Progress: 495 on 8158 Progress: 496 on 8158 Progress: 497 on 8158 Progress: 498 on 8158 Progress: 499 on 8158 Progress: 500 on 8158 Progress: 501 on 8158 Progress: 502 on 8158 Progress: 503 on 8158 Progress: 504 on 8158 Progress: 505 on 8158 Progress: 506 on 8158 Progress: 507 on 8158 Progress: 508 on 8158 Progress: 509 on 8158 Progress: 510 on 8158 Progress: 511 on 8158 Progress: 512 on 8158 Progress: 513 on 8158 Progress: 514 on 8158 Progress: 515 on 8158 Progress: 516 on 8158 Progress: 517 on 8158 Progress: 518 on 8158 Progress: 519 on 8158 Progress: 520 on 8158 Progress: 521 on 8158 Progress: 522 on 8158 Progress: 523 on 8158 Progress: 524 on 8158 Progress: 525 on 8158 Progress: 526 on 8158 Progress: 527 on 8158 Progress: 528 on 8158 Progress: 529 on 8158 Progress: 530 on 8158 Progress: 531 on 8158 Progress: 532 on 8158 Progress: 533 on 8158 Progress: 534 on 8158 Progress: 535 on 8158 Progress: 536 on 8158 Progress: 537 on 8158 Progress: 538 on 8158 Progress: 539 on 8158 Progress: 540 on 8158 Progress: 541 on 8158 Progress: 542 on 8158 Progress: 543 on 8158 Progress: 544 on 8158 Progress: 545 on 8158 Progress: 546 on 8158 Progress: 547 on 8158 Progress: 548 on 8158 Progress: 549 on 8158 Progress: 550 on 8158 Progress: 551 on 8158 Progress: 552 on 8158 Progress: 553 on 8158 Progress: 554 on 8158 Progress: 555 on 8158 Progress: 556 on 8158 Progress: 557 on 8158 Progress: 558 on 8158 Progress: 559 on 8158 Progress: 560 on 8158 Progress: 561 on 8158 Progress: 562 on 8158 Progress: 563 on 8158 Progress: 564 on 8158 Progress: 565 on 8158 Progress: 566 on 8158 Progress: 567 on 8158 Progress: 568 on 8158 Progress: 569 on 8158 Progress: 570 on 8158 Progress: 571 on 8158 Progress: 572 on 8158 Progress: 573 on 8158 Progress: 574 on 8158 Progress: 575 on 8158 Progress: 576 on 8158 Progress: 577 on 8158 Progress: 578 on 8158 Progress: 579 on 8158 Progress: 580 on 8158 Progress: 581 on 8158 Progress: 582 on 8158 Progress: 583 on 8158 Progress: 584 on 8158 Progress: 585 on 8158 Progress: 586 on 8158 Progress: 587 on 8158 Progress: 588 on 8158 Progress: 589 on 8158 Progress: 590 on 8158 Progress: 591 on 8158 Progress: 592 on 8158 Progress: 593 on 8158 Progress: 594 on 8158 Progress: 595 on 8158 Progress: 596 on 8158 Progress: 597 on 8158 Progress: 598 on 8158 Progress: 599 on 8158 Progress: 600 on 8158 Progress: 601 on 8158 Progress: 602 on 8158 Progress: 603 on 8158 Progress: 604 on 8158 Progress: 605 on 8158 Progress: 606 on 8158 Progress: 607 on 8158 Progress: 608 on 8158 Progress: 609 on 8158 Progress: 610 on 8158 Progress: 611 on 8158 Progress: 612 on 8158 Progress: 613 on 8158 Progress: 614 on 8158 Progress: 615 on 8158 Progress: 616 on 8158 Progress: 617 on 8158 Progress: 618 on 8158 Progress: 619 on 8158 Progress: 620 on 8158 Progress: 621 on 8158 Progress: 622 on 8158 Progress: 623 on 8158 Progress: 624 on 8158 Progress: 625 on 8158 Progress: 626 on 8158 Progress: 627 on 8158 Progress: 628 on 8158 Progress: 629 on 8158 Progress: 630 on 8158 Progress: 631 on 8158 Progress: 632 on 8158 Progress: 633 on 8158 Progress: 634 on 8158 Progress: 635 on 8158 Progress: 636 on 8158 Progress: 637 on 8158 Progress: 638 on 8158 Progress: 639 on 8158 Progress: 640 on 8158 Progress: 641 on 8158 Progress: 642 on 8158 Progress: 643 on 8158 Progress: 644 on 8158 Progress: 645 on 8158 Progress: 646 on 8158 Progress: 647 on 8158 Progress: 648 on 8158 Progress: 649 on 8158 Progress: 650 on 8158 Progress: 651 on 8158 Progress: 652 on 8158 Progress: 653 on 8158 Progress: 654 on 8158 Progress: 655 on 8158 Progress: 656 on 8158 Progress: 657 on 8158 Progress: 658 on 8158 Progress: 659 on 8158 Progress: 660 on 8158 Progress: 661 on 8158 Progress: 662 on 8158 Progress: 663 on 8158 Progress: 664 on 8158 Progress: 665 on 8158 Progress: 666 on 8158 Progress: 667 on 8158 Progress: 668 on 8158 Progress: 669 on 8158 Progress: 670 on 8158 Progress: 671 on 8158 Progress: 672 on 8158 Progress: 673 on 8158 Progress: 674 on 8158 Progress: 675 on 8158 Progress: 676 on 8158 Progress: 677 on 8158 Progress: 678 on 8158 Progress: 679 on 8158 Progress: 680 on 8158 Progress: 681 on 8158 Progress: 682 on 8158 Progress: 683 on 8158 Progress: 684 on 8158 Progress: 685 on 8158 Progress: 686 on 8158 Progress: 687 on 8158 Progress: 688 on 8158 Progress: 689 on 8158 Progress: 690 on 8158 Progress: 691 on 8158 Progress: 692 on 8158 Progress: 693 on 8158 Progress: 694 on 8158 Progress: 695 on 8158 Progress: 696 on 8158 Progress: 697 on 8158 Progress: 698 on 8158 Progress: 699 on 8158 Progress: 700 on 8158 Progress: 701 on 8158 Progress: 702 on 8158 Progress: 703 on 8158 Progress: 704 on 8158 Progress: 705 on 8158 Progress: 706 on 8158 Progress: 707 on 8158 Progress: 708 on 8158 Progress: 709 on 8158 Progress: 710 on 8158 Progress: 711 on 8158 Progress: 712 on 8158 Progress: 713 on 8158 Progress: 714 on 8158 Progress: 715 on 8158 Progress: 716 on 8158 Progress: 717 on 8158 Progress: 718 on 8158 Progress: 719 on 8158 Progress: 720 on 8158 Progress: 721 on 8158 Progress: 722 on 8158 Progress: 723 on 8158 Progress: 724 on 8158 Progress: 725 on 8158 Progress: 726 on 8158 Progress: 727 on 8158 Progress: 728 on 8158 Progress: 729 on 8158 Progress: 730 on 8158 Progress: 731 on 8158 Progress: 732 on 8158 Progress: 733 on 8158 Progress: 734 on 8158 Progress: 735 on 8158 Progress: 736 on 8158 Progress: 737 on 8158 Progress: 738 on 8158 Progress: 739 on 8158 Progress: 740 on 8158 Progress: 741 on 8158 Progress: 742 on 8158 Progress: 743 on 8158 Progress: 744 on 8158 Progress: 745 on 8158 Progress: 746 on 8158 Progress: 747 on 8158 Progress: 748 on 8158 Progress: 749 on 8158 Progress: 750 on 8158 Progress: 751 on 8158 Progress: 752 on 8158 Progress: 753 on 8158 Progress: 754 on 8158 Progress: 755 on 8158 Progress: 756 on 8158 Progress: 757 on 8158 Progress: 758 on 8158 Progress: 759 on 8158 Progress: 760 on 8158 Progress: 761 on 8158 Progress: 762 on 8158 Progress: 763 on 8158 Progress: 764 on 8158 Progress: 765 on 8158 Progress: 766 on 8158 Progress: 767 on 8158 Progress: 768 on 8158 Progress: 769 on 8158 Progress: 770 on 8158 Progress: 771 on 8158 Progress: 772 on 8158 Progress: 773 on 8158 Progress: 774 on 8158 Progress: 775 on 8158 Progress: 776 on 8158 Progress: 777 on 8158 Progress: 778 on 8158 Progress: 779 on 8158 Progress: 780 on 8158 Progress: 781 on 8158 Progress: 782 on 8158 Progress: 783 on 8158 Progress: 784 on 8158 Progress: 785 on 8158 Progress: 786 on 8158 Progress: 787 on 8158 Progress: 788 on 8158 Progress: 789 on 8158 Progress: 790 on 8158 Progress: 791 on 8158 Progress: 792 on 8158 Progress: 793 on 8158 Progress: 794 on 8158 Progress: 795 on 8158 Progress: 796 on 8158 Progress: 797 on 8158 Progress: 798 on 8158 Progress: 799 on 8158 Progress: 800 on 8158 Progress: 801 on 8158 Progress: 802 on 8158 Progress: 803 on 8158 Progress: 804 on 8158 Progress: 805 on 8158 Progress: 806 on 8158 Progress: 807 on 8158 Progress: 808 on 8158 Progress: 809 on 8158 Progress: 810 on 8158 Progress: 811 on 8158 Progress: 812 on 8158 Progress: 813 on 8158 Progress: 814 on 8158 Progress: 815 on 8158 Progress: 816 on 8158 Progress: 817 on 8158 Progress: 818 on 8158 Progress: 819 on 8158 Progress: 820 on 8158 Progress: 821 on 8158 Progress: 822 on 8158 Progress: 823 on 8158 Progress: 824 on 8158 Progress: 825 on 8158 Progress: 826 on 8158 Progress: 827 on 8158 Progress: 828 on 8158 Progress: 829 on 8158 Progress: 830 on 8158 Progress: 831 on 8158 Progress: 832 on 8158 Progress: 833 on 8158 Progress: 834 on 8158 Progress: 835 on 8158 Progress: 836 on 8158 Progress: 837 on 8158 Progress: 838 on 8158 Progress: 839 on 8158 Progress: 840 on 8158 Progress: 841 on 8158 Progress: 842 on 8158 Progress: 843 on 8158 Progress: 844 on 8158 Progress: 845 on 8158 Progress: 846 on 8158 Progress: 847 on 8158 Progress: 848 on 8158 Progress: 849 on 8158 Progress: 850 on 8158 Progress: 851 on 8158 Progress: 852 on 8158 Progress: 853 on 8158 Progress: 854 on 8158 Progress: 855 on 8158 Progress: 856 on 8158 Progress: 857 on 8158 Progress: 858 on 8158 Progress: 859 on 8158 Progress: 860 on 8158 Progress: 861 on 8158 Progress: 862 on 8158 Progress: 863 on 8158 Progress: 864 on 8158 Progress: 865 on 8158 Progress: 866 on 8158 Progress: 867 on 8158 Progress: 868 on 8158 Progress: 869 on 8158 Progress: 870 on 8158 Progress: 871 on 8158 Progress: 872 on 8158 Progress: 873 on 8158 Progress: 874 on 8158 Progress: 875 on 8158 Progress: 876 on 8158 Progress: 877 on 8158 Progress: 878 on 8158 Progress: 879 on 8158 Progress: 880 on 8158 Progress: 881 on 8158 Progress: 882 on 8158 Progress: 883 on 8158 Progress: 884 on 8158 Progress: 885 on 8158 Progress: 886 on 8158 Progress: 887 on 8158 Progress: 888 on 8158 Progress: 889 on 8158 Progress: 890 on 8158 Progress: 891 on 8158 Progress: 892 on 8158 Progress: 893 on 8158 Progress: 894 on 8158 Progress: 895 on 8158 Progress: 896 on 8158 Progress: 897 on 8158 Progress: 898 on 8158 Progress: 899 on 8158 Progress: 900 on 8158 Progress: 901 on 8158 Progress: 902 on 8158 Progress: 903 on 8158 Progress: 904 on 8158 Progress: 905 on 8158 Progress: 906 on 8158 Progress: 907 on 8158 Progress: 908 on 8158 Progress: 909 on 8158 Progress: 910 on 8158 Progress: 911 on 8158 Progress: 912 on 8158 Progress: 913 on 8158 Progress: 914 on 8158 Progress: 915 on 8158 Progress: 916 on 8158 Progress: 917 on 8158 Progress: 918 on 8158 Progress: 919 on 8158 Progress: 920 on 8158 Progress: 921 on 8158 Progress: 922 on 8158 Progress: 923 on 8158 Progress: 924 on 8158 Progress: 925 on 8158 Progress: 926 on 8158 Progress: 927 on 8158 Progress: 928 on 8158 Progress: 929 on 8158 Progress: 930 on 8158 Progress: 931 on 8158 Progress: 932 on 8158 Progress: 933 on 8158 Progress: 934 on 8158 Progress: 935 on 8158 Progress: 936 on 8158 Progress: 937 on 8158 Progress: 938 on 8158 Progress: 939 on 8158 Progress: 940 on 8158 Progress: 941 on 8158 Progress: 942 on 8158 Progress: 943 on 8158 Progress: 944 on 8158 Progress: 945 on 8158 Progress: 946 on 8158 Progress: 947 on 8158 Progress: 948 on 8158 Progress: 949 on 8158 Progress: 950 on 8158 Progress: 951 on 8158 Progress: 952 on 8158 Progress: 953 on 8158 Progress: 954 on 8158 Progress: 955 on 8158 Progress: 956 on 8158 Progress: 957 on 8158 Progress: 958 on 8158 Progress: 959 on 8158 Progress: 960 on 8158 Progress: 961 on 8158 Progress: 962 on 8158 Progress: 963 on 8158 Progress: 964 on 8158 Progress: 965 on 8158 Progress: 966 on 8158 Progress: 967 on 8158 Progress: 968 on 8158 Progress: 969 on 8158 Progress: 970 on 8158 Progress: 971 on 8158 Progress: 972 on 8158 Progress: 973 on 8158 Progress: 974 on 8158 Progress: 975 on 8158 Progress: 976 on 8158 Progress: 977 on 8158 Progress: 978 on 8158 Progress: 979 on 8158 Progress: 980 on 8158 Progress: 981 on 8158 Progress: 982 on 8158 Progress: 983 on 8158 Progress: 984 on 8158 Progress: 985 on 8158 Progress: 986 on 8158 Progress: 987 on 8158 Progress: 988 on 8158 Progress: 989 on 8158 Progress: 990 on 8158 Progress: 991 on 8158 Progress: 992 on 8158 Progress: 993 on 8158 Progress: 994 on 8158 Progress: 995 on 8158 Progress: 996 on 8158 Progress: 997 on 8158 Progress: 998 on 8158 Progress: 999 on 8158 Progress: 1000 on 8158 Progress: 1001 on 8158 Progress: 1002 on 8158 Progress: 1003 on 8158 Progress: 1004 on 8158 Progress: 1005 on 8158 Progress: 1006 on 8158 Progress: 1007 on 8158 Progress: 1008 on 8158 Progress: 1009 on 8158 Progress: 1010 on 8158 Progress: 1011 on 8158 Progress: 1012 on 8158 Progress: 1013 on 8158 Progress: 1014 on 8158 Progress: 1015 on 8158 Progress: 1016 on 8158 Progress: 1017 on 8158 Progress: 1018 on 8158 Progress: 1019 on 8158 Progress: 1020 on 8158 Progress: 1021 on 8158 Progress: 1022 on 8158 Progress: 1023 on 8158 Progress: 1024 on 8158 Progress: 1025 on 8158 Progress: 1026 on 8158 Progress: 1027 on 8158 Progress: 1028 on 8158 Progress: 1029 on 8158 Progress: 1030 on 8158 Progress: 1031 on 8158 Progress: 1032 on 8158 Progress: 1033 on 8158 Progress: 1034 on 8158 Progress: 1035 on 8158 Progress: 1036 on 8158 Progress: 1037 on 8158 Progress: 1038 on 8158 Progress: 1039 on 8158 Progress: 1040 on 8158 Progress: 1041 on 8158 Progress: 1042 on 8158 Progress: 1043 on 8158 Progress: 1044 on 8158 Progress: 1045 on 8158 Progress: 1046 on 8158 Progress: 1047 on 8158 Progress: 1048 on 8158 Progress: 1049 on 8158 Progress: 1050 on 8158 Progress: 1051 on 8158 Progress: 1052 on 8158 Progress: 1053 on 8158 Progress: 1054 on 8158 Progress: 1055 on 8158 Progress: 1056 on 8158 Progress: 1057 on 8158 Progress: 1058 on 8158 Progress: 1059 on 8158 Progress: 1060 on 8158 Progress: 1061 on 8158 Progress: 1062 on 8158 Progress: 1063 on 8158 Progress: 1064 on 8158 Progress: 1065 on 8158 Progress: 1066 on 8158 Progress: 1067 on 8158 Progress: 1068 on 8158 Progress: 1069 on 8158 Progress: 1070 on 8158 Progress: 1071 on 8158 Progress: 1072 on 8158 Progress: 1073 on 8158 Progress: 1074 on 8158 Progress: 1075 on 8158 Progress: 1076 on 8158 Progress: 1077 on 8158 Progress: 1078 on 8158 Progress: 1079 on 8158 Progress: 1080 on 8158 Progress: 1081 on 8158 Progress: 1082 on 8158 Progress: 1083 on 8158 Progress: 1084 on 8158 Progress: 1085 on 8158 Progress: 1086 on 8158 Progress: 1087 on 8158 Progress: 1088 on 8158 Progress: 1089 on 8158 Progress: 1090 on 8158 Progress: 1091 on 8158 Progress: 1092 on 8158 Progress: 1093 on 8158 Progress: 1094 on 8158 Progress: 1095 on 8158 Progress: 1096 on 8158 Progress: 1097 on 8158 Progress: 1098 on 8158 Progress: 1099 on 8158 Progress: 1100 on 8158 Progress: 1101 on 8158 Progress: 1102 on 8158 Progress: 1103 on 8158 Progress: 1104 on 8158 Progress: 1105 on 8158 Progress: 1106 on 8158 Progress: 1107 on 8158 Progress: 1108 on 8158 Progress: 1109 on 8158 Progress: 1110 on 8158 Progress: 1111 on 8158 Progress: 1112 on 8158 Progress: 1113 on 8158 Progress: 1114 on 8158 Progress: 1115 on 8158 Progress: 1116 on 8158 Progress: 1117 on 8158 Progress: 1118 on 8158 Progress: 1119 on 8158 Progress: 1120 on 8158 Progress: 1121 on 8158 Progress: 1122 on 8158 Progress: 1123 on 8158 Progress: 1124 on 8158 Progress: 1125 on 8158 Progress: 1126 on 8158 Progress: 1127 on 8158 Progress: 1128 on 8158 Progress: 1129 on 8158 Progress: 1130 on 8158 Progress: 1131 on 8158 Progress: 1132 on 8158 Progress: 1133 on 8158 Progress: 1134 on 8158 Progress: 1135 on 8158 Progress: 1136 on 8158 Progress: 1137 on 8158 Progress: 1138 on 8158 Progress: 1139 on 8158 Progress: 1140 on 8158 Progress: 1141 on 8158 Progress: 1142 on 8158 Progress: 1143 on 8158 Progress: 1144 on 8158 Progress: 1145 on 8158 Progress: 1146 on 8158 Progress: 1147 on 8158 Progress: 1148 on 8158 Progress: 1149 on 8158 Progress: 1150 on 8158 Progress: 1151 on 8158 Progress: 1152 on 8158 Progress: 1153 on 8158 Progress: 1154 on 8158 Progress: 1155 on 8158 Progress: 1156 on 8158 Progress: 1157 on 8158 Progress: 1158 on 8158 Progress: 1159 on 8158 Progress: 1160 on 8158 Progress: 1161 on 8158 Progress: 1162 on 8158 Progress: 1163 on 8158 Progress: 1164 on 8158 Progress: 1165 on 8158 Progress: 1166 on 8158 Progress: 1167 on 8158 Progress: 1168 on 8158 Progress: 1169 on 8158 Progress: 1170 on 8158 Progress: 1171 on 8158 Progress: 1172 on 8158 Progress: 1173 on 8158 Progress: 1174 on 8158 Progress: 1175 on 8158 Progress: 1176 on 8158 Progress: 1177 on 8158 Progress: 1178 on 8158 Progress: 1179 on 8158 Progress: 1180 on 8158 Progress: 1181 on 8158 Progress: 1182 on 8158 Progress: 1183 on 8158 Progress: 1184 on 8158 Progress: 1185 on 8158 Progress: 1186 on 8158 Progress: 1187 on 8158 Progress: 1188 on 8158 Progress: 1189 on 8158 Progress: 1190 on 8158 Progress: 1191 on 8158 Progress: 1192 on 8158 Progress: 1193 on 8158 Progress: 1194 on 8158 Progress: 1195 on 8158 Progress: 1196 on 8158 Progress: 1197 on 8158 Progress: 1198 on 8158 Progress: 1199 on 8158 Progress: 1200 on 8158 Progress: 1201 on 8158 Progress: 1202 on 8158 Progress: 1203 on 8158 Progress: 1204 on 8158 Progress: 1205 on 8158 Progress: 1206 on 8158 Progress: 1207 on 8158 Progress: 1208 on 8158 Progress: 1209 on 8158 Progress: 1210 on 8158 Progress: 1211 on 8158 Progress: 1212 on 8158 Progress: 1213 on 8158 Progress: 1214 on 8158 Progress: 1215 on 8158 Progress: 1216 on 8158 Progress: 1217 on 8158 Progress: 1218 on 8158 Progress: 1219 on 8158 Progress: 1220 on 8158 Progress: 1221 on 8158 Progress: 1222 on 8158 Progress: 1223 on 8158 Progress: 1224 on 8158 Progress: 1225 on 8158 Progress: 1226 on 8158 Progress: 1227 on 8158 Progress: 1228 on 8158 Progress: 1229 on 8158 Progress: 1230 on 8158 Progress: 1231 on 8158 Progress: 1232 on 8158 Progress: 1233 on 8158 Progress: 1234 on 8158 Progress: 1235 on 8158 Progress: 1236 on 8158 Progress: 1237 on 8158 Progress: 1238 on 8158 Progress: 1239 on 8158 Progress: 1240 on 8158 Progress: 1241 on 8158 Progress: 1242 on 8158 Progress: 1243 on 8158 Progress: 1244 on 8158 Progress: 1245 on 8158 Progress: 1246 on 8158 Progress: 1247 on 8158 Progress: 1248 on 8158 Progress: 1249 on 8158 Progress: 1250 on 8158 Progress: 1251 on 8158 Progress: 1252 on 8158 Progress: 1253 on 8158 Progress: 1254 on 8158 Progress: 1255 on 8158 Progress: 1256 on 8158 Progress: 1257 on 8158 Progress: 1258 on 8158 Progress: 1259 on 8158 Progress: 1260 on 8158 Progress: 1261 on 8158 Progress: 1262 on 8158 Progress: 1263 on 8158 Progress: 1264 on 8158 Progress: 1265 on 8158 Progress: 1266 on 8158 Progress: 1267 on 8158 Progress: 1268 on 8158 Progress: 1269 on 8158 Progress: 1270 on 8158 Progress: 1271 on 8158 Progress: 1272 on 8158 Progress: 1273 on 8158 Progress: 1274 on 8158 Progress: 1275 on 8158 Progress: 1276 on 8158 Progress: 1277 on 8158 Progress: 1278 on 8158 Progress: 1279 on 8158 Progress: 1280 on 8158 Progress: 1281 on 8158 Progress: 1282 on 8158 Progress: 1283 on 8158 Progress: 1284 on 8158 Progress: 1285 on 8158 Progress: 1286 on 8158 Progress: 1287 on 8158 Progress: 1288 on 8158 Progress: 1289 on 8158 Progress: 1290 on 8158 Progress: 1291 on 8158 Progress: 1292 on 8158 Progress: 1293 on 8158 Progress: 1294 on 8158 Progress: 1295 on 8158 Progress: 1296 on 8158 Progress: 1297 on 8158 Progress: 1298 on 8158 Progress: 1299 on 8158 Progress: 1300 on 8158 Progress: 1301 on 8158 Progress: 1302 on 8158 Progress: 1303 on 8158 Progress: 1304 on 8158 Progress: 1305 on 8158 Progress: 1306 on 8158 Progress: 1307 on 8158 Progress: 1308 on 8158 Progress: 1309 on 8158 Progress: 1310 on 8158 Progress: 1311 on 8158 Progress: 1312 on 8158 Progress: 1313 on 8158 Progress: 1314 on 8158 Progress: 1315 on 8158 Progress: 1316 on 8158 Progress: 1317 on 8158 Progress: 1318 on 8158 Progress: 1319 on 8158 Progress: 1320 on 8158 Progress: 1321 on 8158 Progress: 1322 on 8158 Progress: 1323 on 8158 Progress: 1324 on 8158 Progress: 1325 on 8158 Progress: 1326 on 8158 Progress: 1327 on 8158 Progress: 1328 on 8158 Progress: 1329 on 8158 Progress: 1330 on 8158 Progress: 1331 on 8158 Progress: 1332 on 8158 Progress: 1333 on 8158 Progress: 1334 on 8158 Progress: 1335 on 8158 Progress: 1336 on 8158 Progress: 1337 on 8158 Progress: 1338 on 8158 Progress: 1339 on 8158 Progress: 1340 on 8158 Progress: 1341 on 8158 Progress: 1342 on 8158 Progress: 1343 on 8158 Progress: 1344 on 8158 Progress: 1345 on 8158 Progress: 1346 on 8158 Progress: 1347 on 8158 Progress: 1348 on 8158 Progress: 1349 on 8158 Progress: 1350 on 8158 Progress: 1351 on 8158 Progress: 1352 on 8158 Progress: 1353 on 8158 Progress: 1354 on 8158 Progress: 1355 on 8158 Progress: 1356 on 8158 Progress: 1357 on 8158 Progress: 1358 on 8158 Progress: 1359 on 8158 Progress: 1360 on 8158 Progress: 1361 on 8158 Progress: 1362 on 8158 Progress: 1363 on 8158 Progress: 1364 on 8158 Progress: 1365 on 8158 Progress: 1366 on 8158 Progress: 1367 on 8158 Progress: 1368 on 8158 Progress: 1369 on 8158 Progress: 1370 on 8158 Progress: 1371 on 8158 Progress: 1372 on 8158 Progress: 1373 on 8158 Progress: 1374 on 8158 Progress: 1375 on 8158 Progress: 1376 on 8158 Progress: 1377 on 8158 Progress: 1378 on 8158 Progress: 1379 on 8158 Progress: 1380 on 8158 Progress: 1381 on 8158 Progress: 1382 on 8158 Progress: 1383 on 8158 Progress: 1384 on 8158 Progress: 1385 on 8158 Progress: 1386 on 8158 Progress: 1387 on 8158 Progress: 1388 on 8158 Progress: 1389 on 8158 Progress: 1390 on 8158 Progress: 1391 on 8158 Progress: 1392 on 8158 Progress: 1393 on 8158 Progress: 1394 on 8158 Progress: 1395 on 8158 Progress: 1396 on 8158 Progress: 1397 on 8158 Progress: 1398 on 8158 Progress: 1399 on 8158 Progress: 1400 on 8158 Progress: 1401 on 8158 Progress: 1402 on 8158 Progress: 1403 on 8158 Progress: 1404 on 8158 Progress: 1405 on 8158 Progress: 1406 on 8158 Progress: 1407 on 8158 Progress: 1408 on 8158 Progress: 1409 on 8158 Progress: 1410 on 8158 Progress: 1411 on 8158 Progress: 1412 on 8158 Progress: 1413 on 8158 Progress: 1414 on 8158 Progress: 1415 on 8158 Progress: 1416 on 8158 Progress: 1417 on 8158 Progress: 1418 on 8158 Progress: 1419 on 8158 Progress: 1420 on 8158 Progress: 1421 on 8158 Progress: 1422 on 8158 Progress: 1423 on 8158 Progress: 1424 on 8158 Progress: 1425 on 8158 Progress: 1426 on 8158 Progress: 1427 on 8158 Progress: 1428 on 8158 Progress: 1429 on 8158 Progress: 1430 on 8158 Progress: 1431 on 8158 Progress: 1432 on 8158 Progress: 1433 on 8158 Progress: 1434 on 8158 Progress: 1435 on 8158 Progress: 1436 on 8158 Progress: 1437 on 8158 Progress: 1438 on 8158 Progress: 1439 on 8158 Progress: 1440 on 8158 Progress: 1441 on 8158 Progress: 1442 on 8158 Progress: 1443 on 8158 Progress: 1444 on 8158 Progress: 1445 on 8158 Progress: 1446 on 8158 Progress: 1447 on 8158 Progress: 1448 on 8158 Progress: 1449 on 8158 Progress: 1450 on 8158 Progress: 1451 on 8158 Progress: 1452 on 8158 Progress: 1453 on 8158 Progress: 1454 on 8158 Progress: 1455 on 8158 Progress: 1456 on 8158 Progress: 1457 on 8158 Progress: 1458 on 8158 Progress: 1459 on 8158 Progress: 1460 on 8158 Progress: 1461 on 8158 Progress: 1462 on 8158 Progress: 1463 on 8158 Progress: 1464 on 8158 Progress: 1465 on 8158 Progress: 1466 on 8158 Progress: 1467 on 8158 Progress: 1468 on 8158 Progress: 1469 on 8158 Progress: 1470 on 8158 Progress: 1471 on 8158 Progress: 1472 on 8158 Progress: 1473 on 8158 Progress: 1474 on 8158 Progress: 1475 on 8158 Progress: 1476 on 8158 Progress: 1477 on 8158 Progress: 1478 on 8158 Progress: 1479 on 8158 Progress: 1480 on 8158 Progress: 1481 on 8158 Progress: 1482 on 8158 Progress: 1483 on 8158 Progress: 1484 on 8158 Progress: 1485 on 8158 Progress: 1486 on 8158 Progress: 1487 on 8158 Progress: 1488 on 8158 Progress: 1489 on 8158 Progress: 1490 on 8158 Progress: 1491 on 8158 Progress: 1492 on 8158 Progress: 1493 on 8158 Progress: 1494 on 8158 Progress: 1495 on 8158 Progress: 1496 on 8158 Progress: 1497 on 8158 Progress: 1498 on 8158 Progress: 1499 on 8158 Progress: 1500 on 8158 Progress: 1501 on 8158 Progress: 1502 on 8158 Progress: 1503 on 8158 Progress: 1504 on 8158 Progress: 1505 on 8158 Progress: 1506 on 8158 Progress: 1507 on 8158 Progress: 1508 on 8158 Progress: 1509 on 8158 Progress: 1510 on 8158 Progress: 1511 on 8158 Progress: 1512 on 8158 Progress: 1513 on 8158 Progress: 1514 on 8158 Progress: 1515 on 8158 Progress: 1516 on 8158 Progress: 1517 on 8158 Progress: 1518 on 8158 Progress: 1519 on 8158 Progress: 1520 on 8158 Progress: 1521 on 8158 Progress: 1522 on 8158 Progress: 1523 on 8158 Progress: 1524 on 8158 Progress: 1525 on 8158 Progress: 1526 on 8158 Progress: 1527 on 8158 Progress: 1528 on 8158 Progress: 1529 on 8158 Progress: 1530 on 8158 Progress: 1531 on 8158 Progress: 1532 on 8158 Progress: 1533 on 8158 Progress: 1534 on 8158 Progress: 1535 on 8158 Progress: 1536 on 8158 Progress: 1537 on 8158 Progress: 1538 on 8158 Progress: 1539 on 8158 Progress: 1540 on 8158 Progress: 1541 on 8158 Progress: 1542 on 8158 Progress: 1543 on 8158 Progress: 1544 on 8158 Progress: 1545 on 8158 Progress: 1546 on 8158 Progress: 1547 on 8158 Progress: 1548 on 8158 Progress: 1549 on 8158 Progress: 1550 on 8158 Progress: 1551 on 8158 Progress: 1552 on 8158 Progress: 1553 on 8158 Progress: 1554 on 8158 Progress: 1555 on 8158 Progress: 1556 on 8158 Progress: 1557 on 8158 Progress: 1558 on 8158 Progress: 1559 on 8158 Progress: 1560 on 8158 Progress: 1561 on 8158 Progress: 1562 on 8158 Progress: 1563 on 8158 Progress: 1564 on 8158 Progress: 1565 on 8158 Progress: 1566 on 8158 Progress: 1567 on 8158 Progress: 1568 on 8158 Progress: 1569 on 8158 Progress: 1570 on 8158 Progress: 1571 on 8158 Progress: 1572 on 8158 Progress: 1573 on 8158 Progress: 1574 on 8158 Progress: 1575 on 8158 Progress: 1576 on 8158 Progress: 1577 on 8158 Progress: 1578 on 8158 Progress: 1579 on 8158 Progress: 1580 on 8158 Progress: 1581 on 8158 Progress: 1582 on 8158 Progress: 1583 on 8158 Progress: 1584 on 8158 Progress: 1585 on 8158 Progress: 1586 on 8158 Progress: 1587 on 8158 Progress: 1588 on 8158 Progress: 1589 on 8158 Progress: 1590 on 8158 Progress: 1591 on 8158 Progress: 1592 on 8158 Progress: 1593 on 8158 Progress: 1594 on 8158 Progress: 1595 on 8158 Progress: 1596 on 8158 Progress: 1597 on 8158 Progress: 1598 on 8158 Progress: 1599 on 8158 Progress: 1600 on 8158 Progress: 1601 on 8158 Progress: 1602 on 8158 Progress: 1603 on 8158 Progress: 1604 on 8158 Progress: 1605 on 8158 Progress: 1606 on 8158 Progress: 1607 on 8158 Progress: 1608 on 8158 Progress: 1609 on 8158 Progress: 1610 on 8158 Progress: 1611 on 8158 Progress: 1612 on 8158 Progress: 1613 on 8158 Progress: 1614 on 8158 Progress: 1615 on 8158 Progress: 1616 on 8158 Progress: 1617 on 8158 Progress: 1618 on 8158 Progress: 1619 on 8158 Progress: 1620 on 8158 Progress: 1621 on 8158 Progress: 1622 on 8158 Progress: 1623 on 8158 Progress: 1624 on 8158 Progress: 1625 on 8158 Progress: 1626 on 8158 Progress: 1627 on 8158 Progress: 1628 on 8158 Progress: 1629 on 8158 Progress: 1630 on 8158 Progress: 1631 on 8158 Progress: 1632 on 8158 Progress: 1633 on 8158 Progress: 1634 on 8158 Progress: 1635 on 8158 Progress: 1636 on 8158 Progress: 1637 on 8158 Progress: 1638 on 8158 Progress: 1639 on 8158 Progress: 1640 on 8158 Progress: 1641 on 8158 Progress: 1642 on 8158 Progress: 1643 on 8158 Progress: 1644 on 8158 Progress: 1645 on 8158 Progress: 1646 on 8158 Progress: 1647 on 8158 Progress: 1648 on 8158 Progress: 1649 on 8158 Progress: 1650 on 8158 Progress: 1651 on 8158 Progress: 1652 on 8158 Progress: 1653 on 8158 Progress: 1654 on 8158 Progress: 1655 on 8158 Progress: 1656 on 8158 Progress: 1657 on 8158 Progress: 1658 on 8158 Progress: 1659 on 8158 Progress: 1660 on 8158 Progress: 1661 on 8158 Progress: 1662 on 8158 Progress: 1663 on 8158 Progress: 1664 on 8158 Progress: 1665 on 8158 Progress: 1666 on 8158 Progress: 1667 on 8158 Progress: 1668 on 8158 Progress: 1669 on 8158 Progress: 1670 on 8158 Progress: 1671 on 8158 Progress: 1672 on 8158 Progress: 1673 on 8158 Progress: 1674 on 8158 Progress: 1675 on 8158 Progress: 1676 on 8158 Progress: 1677 on 8158 Progress: 1678 on 8158 Progress: 1679 on 8158 Progress: 1680 on 8158 Progress: 1681 on 8158 Progress: 1682 on 8158 Progress: 1683 on 8158 Progress: 1684 on 8158 Progress: 1685 on 8158 Progress: 1686 on 8158 Progress: 1687 on 8158 Progress: 1688 on 8158 Progress: 1689 on 8158 Progress: 1690 on 8158 Progress: 1691 on 8158 Progress: 1692 on 8158 Progress: 1693 on 8158 Progress: 1694 on 8158 Progress: 1695 on 8158 Progress: 1696 on 8158 Progress: 1697 on 8158 Progress: 1698 on 8158 Progress: 1699 on 8158 Progress: 1700 on 8158 Progress: 1701 on 8158 Progress: 1702 on 8158 Progress: 1703 on 8158 Progress: 1704 on 8158 Progress: 1705 on 8158 Progress: 1706 on 8158 Progress: 1707 on 8158 Progress: 1708 on 8158 Progress: 1709 on 8158 Progress: 1710 on 8158 Progress: 1711 on 8158 Progress: 1712 on 8158 Progress: 1713 on 8158 Progress: 1714 on 8158 Progress: 1715 on 8158 Progress: 1716 on 8158 Progress: 1717 on 8158 Progress: 1718 on 8158 Progress: 1719 on 8158 Progress: 1720 on 8158 Progress: 1721 on 8158 Progress: 1722 on 8158 Progress: 1723 on 8158 Progress: 1724 on 8158 Progress: 1725 on 8158 Progress: 1726 on 8158 Progress: 1727 on 8158 Progress: 1728 on 8158 Progress: 1729 on 8158 Progress: 1730 on 8158 Progress: 1731 on 8158 Progress: 1732 on 8158 Progress: 1733 on 8158 Progress: 1734 on 8158 Progress: 1735 on 8158 Progress: 1736 on 8158 Progress: 1737 on 8158 Progress: 1738 on 8158 Progress: 1739 on 8158 Progress: 1740 on 8158 Progress: 1741 on 8158 Progress: 1742 on 8158 Progress: 1743 on 8158 Progress: 1744 on 8158 Progress: 1745 on 8158 Progress: 1746 on 8158 Progress: 1747 on 8158 Progress: 1748 on 8158 Progress: 1749 on 8158 Progress: 1750 on 8158 Progress: 1751 on 8158 Progress: 1752 on 8158 Progress: 1753 on 8158 Progress: 1754 on 8158 Progress: 1755 on 8158 Progress: 1756 on 8158 Progress: 1757 on 8158 Progress: 1758 on 8158 Progress: 1759 on 8158 Progress: 1760 on 8158 Progress: 1761 on 8158 Progress: 1762 on 8158 Progress: 1763 on 8158 Progress: 1764 on 8158 Progress: 1765 on 8158 Progress: 1766 on 8158 Progress: 1767 on 8158 Progress: 1768 on 8158 Progress: 1769 on 8158 Progress: 1770 on 8158 Progress: 1771 on 8158 Progress: 1772 on 8158 Progress: 1773 on 8158 Progress: 1774 on 8158 Progress: 1775 on 8158 Progress: 1776 on 8158 Progress: 1777 on 8158 Progress: 1778 on 8158 Progress: 1779 on 8158 Progress: 1780 on 8158 Progress: 1781 on 8158 Progress: 1782 on 8158 Progress: 1783 on 8158 Progress: 1784 on 8158 Progress: 1785 on 8158 Progress: 1786 on 8158 Progress: 1787 on 8158 Progress: 1788 on 8158 Progress: 1789 on 8158 Progress: 1790 on 8158 Progress: 1791 on 8158 Progress: 1792 on 8158 Progress: 1793 on 8158 Progress: 1794 on 8158 Progress: 1795 on 8158 Progress: 1796 on 8158 Progress: 1797 on 8158 Progress: 1798 on 8158 Progress: 1799 on 8158 Progress: 1800 on 8158 Progress: 1801 on 8158 Progress: 1802 on 8158 Progress: 1803 on 8158 Progress: 1804 on 8158 Progress: 1805 on 8158 Progress: 1806 on 8158 Progress: 1807 on 8158 Progress: 1808 on 8158 Progress: 1809 on 8158 Progress: 1810 on 8158 Progress: 1811 on 8158 Progress: 1812 on 8158 Progress: 1813 on 8158 Progress: 1814 on 8158 Progress: 1815 on 8158 Progress: 1816 on 8158 Progress: 1817 on 8158 Progress: 1818 on 8158 Progress: 1819 on 8158 Progress: 1820 on 8158 Progress: 1821 on 8158 Progress: 1822 on 8158 Progress: 1823 on 8158 Progress: 1824 on 8158 Progress: 1825 on 8158 Progress: 1826 on 8158 Progress: 1827 on 8158 Progress: 1828 on 8158 Progress: 1829 on 8158 Progress: 1830 on 8158 Progress: 1831 on 8158 Progress: 1832 on 8158 Progress: 1833 on 8158 Progress: 1834 on 8158 Progress: 1835 on 8158 Progress: 1836 on 8158 Progress: 1837 on 8158 Progress: 1838 on 8158 Progress: 1839 on 8158 Progress: 1840 on 8158 Progress: 1841 on 8158 Progress: 1842 on 8158 Progress: 1843 on 8158 Progress: 1844 on 8158 Progress: 1845 on 8158 Progress: 1846 on 8158 Progress: 1847 on 8158 Progress: 1848 on 8158 Progress: 1849 on 8158 Progress: 1850 on 8158 Progress: 1851 on 8158 Progress: 1852 on 8158 Progress: 1853 on 8158 Progress: 1854 on 8158 Progress: 1855 on 8158 Progress: 1856 on 8158 Progress: 1857 on 8158 Progress: 1858 on 8158 Progress: 1859 on 8158 Progress: 1860 on 8158 Progress: 1861 on 8158 Progress: 1862 on 8158 Progress: 1863 on 8158 Progress: 1864 on 8158 Progress: 1865 on 8158 Progress: 1866 on 8158 Progress: 1867 on 8158 Progress: 1868 on 8158 Progress: 1869 on 8158 Progress: 1870 on 8158 Progress: 1871 on 8158 Progress: 1872 on 8158 Progress: 1873 on 8158 Progress: 1874 on 8158 Progress: 1875 on 8158 Progress: 1876 on 8158 Progress: 1877 on 8158 Progress: 1878 on 8158 Progress: 1879 on 8158 Progress: 1880 on 8158 Progress: 1881 on 8158 Progress: 1882 on 8158 Progress: 1883 on 8158 Progress: 1884 on 8158 Progress: 1885 on 8158 Progress: 1886 on 8158 Progress: 1887 on 8158 Progress: 1888 on 8158 Progress: 1889 on 8158 Progress: 1890 on 8158 Progress: 1891 on 8158 Progress: 1892 on 8158 Progress: 1893 on 8158 Progress: 1894 on 8158 Progress: 1895 on 8158 Progress: 1896 on 8158 Progress: 1897 on 8158 Progress: 1898 on 8158 Progress: 1899 on 8158 Progress: 1900 on 8158 Progress: 1901 on 8158 Progress: 1902 on 8158 Progress: 1903 on 8158 Progress: 1904 on 8158 Progress: 1905 on 8158 Progress: 1906 on 8158 Progress: 1907 on 8158 Progress: 1908 on 8158 Progress: 1909 on 8158 Progress: 1910 on 8158 Progress: 1911 on 8158 Progress: 1912 on 8158 Progress: 1913 on 8158 Progress: 1914 on 8158 Progress: 1915 on 8158 Progress: 1916 on 8158 Progress: 1917 on 8158 Progress: 1918 on 8158 Progress: 1919 on 8158 Progress: 1920 on 8158 Progress: 1921 on 8158 Progress: 1922 on 8158 Progress: 1923 on 8158 Progress: 1924 on 8158 Progress: 1925 on 8158 Progress: 1926 on 8158 Progress: 1927 on 8158 Progress: 1928 on 8158 Progress: 1929 on 8158 Progress: 1930 on 8158 Progress: 1931 on 8158 Progress: 1932 on 8158 Progress: 1933 on 8158 Progress: 1934 on 8158 Progress: 1935 on 8158 Progress: 1936 on 8158 Progress: 1937 on 8158 Progress: 1938 on 8158 Progress: 1939 on 8158 Progress: 1940 on 8158 Progress: 1941 on 8158 Progress: 1942 on 8158 Progress: 1943 on 8158 Progress: 1944 on 8158 Progress: 1945 on 8158 Progress: 1946 on 8158 Progress: 1947 on 8158 Progress: 1948 on 8158 Progress: 1949 on 8158 Progress: 1950 on 8158 Progress: 1951 on 8158 Progress: 1952 on 8158 Progress: 1953 on 8158 Progress: 1954 on 8158 Progress: 1955 on 8158 Progress: 1956 on 8158 Progress: 1957 on 8158 Progress: 1958 on 8158 Progress: 1959 on 8158 Progress: 1960 on 8158 Progress: 1961 on 8158 Progress: 1962 on 8158 Progress: 1963 on 8158 Progress: 1964 on 8158 Progress: 1965 on 8158 Progress: 1966 on 8158 Progress: 1967 on 8158 Progress: 1968 on 8158 Progress: 1969 on 8158 Progress: 1970 on 8158 Progress: 1971 on 8158 Progress: 1972 on 8158 Progress: 1973 on 8158 Progress: 1974 on 8158 Progress: 1975 on 8158 Progress: 1976 on 8158 Progress: 1977 on 8158 Progress: 1978 on 8158 Progress: 1979 on 8158 Progress: 1980 on 8158 Progress: 1981 on 8158 Progress: 1982 on 8158 Progress: 1983 on 8158 Progress: 1984 on 8158 Progress: 1985 on 8158 Progress: 1986 on 8158 Progress: 1987 on 8158 Progress: 1988 on 8158 Progress: 1989 on 8158 Progress: 1990 on 8158 Progress: 1991 on 8158 Progress: 1992 on 8158 Progress: 1993 on 8158 Progress: 1994 on 8158 Progress: 1995 on 8158 Progress: 1996 on 8158 Progress: 1997 on 8158 Progress: 1998 on 8158 Progress: 1999 on 8158 Progress: 2000 on 8158 Progress: 2001 on 8158 Progress: 2002 on 8158 Progress: 2003 on 8158 Progress: 2004 on 8158 Progress: 2005 on 8158 Progress: 2006 on 8158 Progress: 2007 on 8158 Progress: 2008 on 8158 Progress: 2009 on 8158 Progress: 2010 on 8158 Progress: 2011 on 8158 Progress: 2012 on 8158 Progress: 2013 on 8158 Progress: 2014 on 8158 Progress: 2015 on 8158 Progress: 2016 on 8158 Progress: 2017 on 8158 Progress: 2018 on 8158 Progress: 2019 on 8158 Progress: 2020 on 8158 Progress: 2021 on 8158 Progress: 2022 on 8158 Progress: 2023 on 8158 Progress: 2024 on 8158 Progress: 2025 on 8158 Progress: 2026 on 8158 Progress: 2027 on 8158 Progress: 2028 on 8158 Progress: 2029 on 8158 Progress: 2030 on 8158 Progress: 2031 on 8158 Progress: 2032 on 8158 Progress: 2033 on 8158 Progress: 2034 on 8158 Progress: 2035 on 8158 Progress: 2036 on 8158 Progress: 2037 on 8158 Progress: 2038 on 8158 Progress: 2039 on 8158 Progress: 2040 on 8158 Progress: 2041 on 8158 Progress: 2042 on 8158 Progress: 2043 on 8158 Progress: 2044 on 8158 Progress: 2045 on 8158 Progress: 2046 on 8158 Progress: 2047 on 8158 Progress: 2048 on 8158 Progress: 2049 on 8158 Progress: 2050 on 8158 Progress: 2051 on 8158 Progress: 2052 on 8158 Progress: 2053 on 8158 Progress: 2054 on 8158 Progress: 2055 on 8158 Progress: 2056 on 8158 Progress: 2057 on 8158 Progress: 2058 on 8158 Progress: 2059 on 8158 Progress: 2060 on 8158 Progress: 2061 on 8158 Progress: 2062 on 8158 Progress: 2063 on 8158 Progress: 2064 on 8158 Progress: 2065 on 8158 Progress: 2066 on 8158 Progress: 2067 on 8158 Progress: 2068 on 8158 Progress: 2069 on 8158 Progress: 2070 on 8158 Progress: 2071 on 8158 Progress: 2072 on 8158 Progress: 2073 on 8158 Progress: 2074 on 8158 Progress: 2075 on 8158 Progress: 2076 on 8158 Progress: 2077 on 8158 Progress: 2078 on 8158 Progress: 2079 on 8158 Progress: 2080 on 8158 Progress: 2081 on 8158 Progress: 2082 on 8158 Progress: 2083 on 8158 Progress: 2084 on 8158 Progress: 2085 on 8158 Progress: 2086 on 8158 Progress: 2087 on 8158 Progress: 2088 on 8158 Progress: 2089 on 8158 Progress: 2090 on 8158 Progress: 2091 on 8158 Progress: 2092 on 8158 Progress: 2093 on 8158 Progress: 2094 on 8158 Progress: 2095 on 8158 Progress: 2096 on 8158 Progress: 2097 on 8158 Progress: 2098 on 8158 Progress: 2099 on 8158 Progress: 2100 on 8158 Progress: 2101 on 8158 Progress: 2102 on 8158 Progress: 2103 on 8158 Progress: 2104 on 8158 Progress: 2105 on 8158 Progress: 2106 on 8158 Progress: 2107 on 8158 Progress: 2108 on 8158 Progress: 2109 on 8158 Progress: 2110 on 8158 Progress: 2111 on 8158 Progress: 2112 on 8158 Progress: 2113 on 8158 Progress: 2114 on 8158 Progress: 2115 on 8158 Progress: 2116 on 8158 Progress: 2117 on 8158 Progress: 2118 on 8158 Progress: 2119 on 8158 Progress: 2120 on 8158 Progress: 2121 on 8158 Progress: 2122 on 8158 Progress: 2123 on 8158 Progress: 2124 on 8158 Progress: 2125 on 8158 Progress: 2126 on 8158 Progress: 2127 on 8158 Progress: 2128 on 8158 Progress: 2129 on 8158 Progress: 2130 on 8158 Progress: 2131 on 8158 Progress: 2132 on 8158 Progress: 2133 on 8158 Progress: 2134 on 8158 Progress: 2135 on 8158 Progress: 2136 on 8158 Progress: 2137 on 8158 Progress: 2138 on 8158 Progress: 2139 on 8158 Progress: 2140 on 8158 Progress: 2141 on 8158 Progress: 2142 on 8158 Progress: 2143 on 8158 Progress: 2144 on 8158 Progress: 2145 on 8158 Progress: 2146 on 8158 Progress: 2147 on 8158 Progress: 2148 on 8158 Progress: 2149 on 8158 Progress: 2150 on 8158 Progress: 2151 on 8158 Progress: 2152 on 8158 Progress: 2153 on 8158 Progress: 2154 on 8158 Progress: 2155 on 8158 Progress: 2156 on 8158 Progress: 2157 on 8158 Progress: 2158 on 8158 Progress: 2159 on 8158 Progress: 2160 on 8158 Progress: 2161 on 8158 Progress: 2162 on 8158 Progress: 2163 on 8158 Progress: 2164 on 8158 Progress: 2165 on 8158 Progress: 2166 on 8158 Progress: 2167 on 8158 Progress: 2168 on 8158 Progress: 2169 on 8158 Progress: 2170 on 8158 Progress: 2171 on 8158 Progress: 2172 on 8158 Progress: 2173 on 8158 Progress: 2174 on 8158 Progress: 2175 on 8158 Progress: 2176 on 8158 Progress: 2177 on 8158 Progress: 2178 on 8158 Progress: 2179 on 8158 Progress: 2180 on 8158 Progress: 2181 on 8158 Progress: 2182 on 8158 Progress: 2183 on 8158 Progress: 2184 on 8158 Progress: 2185 on 8158 Progress: 2186 on 8158 Progress: 2187 on 8158 Progress: 2188 on 8158 Progress: 2189 on 8158 Progress: 2190 on 8158 Progress: 2191 on 8158 Progress: 2192 on 8158 Progress: 2193 on 8158 Progress: 2194 on 8158 Progress: 2195 on 8158 Progress: 2196 on 8158 Progress: 2197 on 8158 Progress: 2198 on 8158 Progress: 2199 on 8158 Progress: 2200 on 8158 Progress: 2201 on 8158 Progress: 2202 on 8158 Progress: 2203 on 8158 Progress: 2204 on 8158 Progress: 2205 on 8158 Progress: 2206 on 8158 Progress: 2207 on 8158 Progress: 2208 on 8158 Progress: 2209 on 8158 Progress: 2210 on 8158 Progress: 2211 on 8158 Progress: 2212 on 8158 Progress: 2213 on 8158 Progress: 2214 on 8158 Progress: 2215 on 8158 Progress: 2216 on 8158 Progress: 2217 on 8158 Progress: 2218 on 8158 Progress: 2219 on 8158 Progress: 2220 on 8158 Progress: 2221 on 8158 Progress: 2222 on 8158 Progress: 2223 on 8158 Progress: 2224 on 8158 Progress: 2225 on 8158 Progress: 2226 on 8158 Progress: 2227 on 8158 Progress: 2228 on 8158 Progress: 2229 on 8158 Progress: 2230 on 8158 Progress: 2231 on 8158 Progress: 2232 on 8158 Progress: 2233 on 8158 Progress: 2234 on 8158 Progress: 2235 on 8158 Progress: 2236 on 8158 Progress: 2237 on 8158 Progress: 2238 on 8158 Progress: 2239 on 8158 Progress: 2240 on 8158 Progress: 2241 on 8158 Progress: 2242 on 8158 Progress: 2243 on 8158 Progress: 2244 on 8158 Progress: 2245 on 8158 Progress: 2246 on 8158 Progress: 2247 on 8158 Progress: 2248 on 8158 Progress: 2249 on 8158 Progress: 2250 on 8158 Progress: 2251 on 8158 Progress: 2252 on 8158 Progress: 2253 on 8158 Progress: 2254 on 8158 Progress: 2255 on 8158 Progress: 2256 on 8158 Progress: 2257 on 8158 Progress: 2258 on 8158 Progress: 2259 on 8158 Progress: 2260 on 8158 Progress: 2261 on 8158 Progress: 2262 on 8158 Progress: 2263 on 8158 Progress: 2264 on 8158 Progress: 2265 on 8158 Progress: 2266 on 8158 Progress: 2267 on 8158 Progress: 2268 on 8158 Progress: 2269 on 8158 Progress: 2270 on 8158 Progress: 2271 on 8158 Progress: 2272 on 8158 Progress: 2273 on 8158 Progress: 2274 on 8158 Progress: 2275 on 8158 Progress: 2276 on 8158 Progress: 2277 on 8158 Progress: 2278 on 8158 Progress: 2279 on 8158 Progress: 2280 on 8158 Progress: 2281 on 8158 Progress: 2282 on 8158 Progress: 2283 on 8158 Progress: 2284 on 8158 Progress: 2285 on 8158 Progress: 2286 on 8158 Progress: 2287 on 8158 Progress: 2288 on 8158 Progress: 2289 on 8158 Progress: 2290 on 8158 Progress: 2291 on 8158 Progress: 2292 on 8158 Progress: 2293 on 8158 Progress: 2294 on 8158 Progress: 2295 on 8158 Progress: 2296 on 8158 Progress: 2297 on 8158 Progress: 2298 on 8158 Progress: 2299 on 8158 Progress: 2300 on 8158 Progress: 2301 on 8158 Progress: 2302 on 8158 Progress: 2303 on 8158 Progress: 2304 on 8158 Progress: 2305 on 8158 Progress: 2306 on 8158 Progress: 2307 on 8158 Progress: 2308 on 8158 Progress: 2309 on 8158 Progress: 2310 on 8158 Progress: 2311 on 8158 Progress: 2312 on 8158 Progress: 2313 on 8158 Progress: 2314 on 8158 Progress: 2315 on 8158 Progress: 2316 on 8158 Progress: 2317 on 8158 Progress: 2318 on 8158 Progress: 2319 on 8158 Progress: 2320 on 8158 Progress: 2321 on 8158 Progress: 2322 on 8158 Progress: 2323 on 8158 Progress: 2324 on 8158 Progress: 2325 on 8158 Progress: 2326 on 8158 Progress: 2327 on 8158 Progress: 2328 on 8158 Progress: 2329 on 8158 Progress: 2330 on 8158 Progress: 2331 on 8158 Progress: 2332 on 8158 Progress: 2333 on 8158 Progress: 2334 on 8158 Progress: 2335 on 8158 Progress: 2336 on 8158 Progress: 2337 on 8158 Progress: 2338 on 8158 Progress: 2339 on 8158 Progress: 2340 on 8158 Progress: 2341 on 8158 Progress: 2342 on 8158 Progress: 2343 on 8158 Progress: 2344 on 8158 Progress: 2345 on 8158 Progress: 2346 on 8158 Progress: 2347 on 8158 Progress: 2348 on 8158 Progress: 2349 on 8158 Progress: 2350 on 8158 Progress: 2351 on 8158 Progress: 2352 on 8158 Progress: 2353 on 8158 Progress: 2354 on 8158 Progress: 2355 on 8158 Progress: 2356 on 8158 Progress: 2357 on 8158 Progress: 2358 on 8158 Progress: 2359 on 8158 Progress: 2360 on 8158 Progress: 2361 on 8158 Progress: 2362 on 8158 Progress: 2363 on 8158 Progress: 2364 on 8158 Progress: 2365 on 8158 Progress: 2366 on 8158 Progress: 2367 on 8158 Progress: 2368 on 8158 Progress: 2369 on 8158 Progress: 2370 on 8158 Progress: 2371 on 8158 Progress: 2372 on 8158 Progress: 2373 on 8158 Progress: 2374 on 8158 Progress: 2375 on 8158 Progress: 2376 on 8158 Progress: 2377 on 8158 Progress: 2378 on 8158 Progress: 2379 on 8158 Progress: 2380 on 8158 Progress: 2381 on 8158 Progress: 2382 on 8158 Progress: 2383 on 8158 Progress: 2384 on 8158 Progress: 2385 on 8158 Progress: 2386 on 8158 Progress: 2387 on 8158 Progress: 2388 on 8158 Progress: 2389 on 8158 Progress: 2390 on 8158 Progress: 2391 on 8158 Progress: 2392 on 8158 Progress: 2393 on 8158 Progress: 2394 on 8158 Progress: 2395 on 8158 Progress: 2396 on 8158 Progress: 2397 on 8158 Progress: 2398 on 8158 Progress: 2399 on 8158 Progress: 2400 on 8158 Progress: 2401 on 8158 Progress: 2402 on 8158 Progress: 2403 on 8158 Progress: 2404 on 8158 Progress: 2405 on 8158 Progress: 2406 on 8158 Progress: 2407 on 8158 Progress: 2408 on 8158 Progress: 2409 on 8158 Progress: 2410 on 8158 Progress: 2411 on 8158 Progress: 2412 on 8158 Progress: 2413 on 8158 Progress: 2414 on 8158 Progress: 2415 on 8158 Progress: 2416 on 8158 Progress: 2417 on 8158 Progress: 2418 on 8158 Progress: 2419 on 8158 Progress: 2420 on 8158 Progress: 2421 on 8158 Progress: 2422 on 8158 Progress: 2423 on 8158 Progress: 2424 on 8158 Progress: 2425 on 8158 Progress: 2426 on 8158 Progress: 2427 on 8158 Progress: 2428 on 8158 Progress: 2429 on 8158 Progress: 2430 on 8158 Progress: 2431 on 8158 Progress: 2432 on 8158 Progress: 2433 on 8158 Progress: 2434 on 8158 Progress: 2435 on 8158 Progress: 2436 on 8158 Progress: 2437 on 8158 Progress: 2438 on 8158 Progress: 2439 on 8158 Progress: 2440 on 8158 Progress: 2441 on 8158 Progress: 2442 on 8158 Progress: 2443 on 8158 Progress: 2444 on 8158 Progress: 2445 on 8158 Progress: 2446 on 8158 Progress: 2447 on 8158 Progress: 2448 on 8158 Progress: 2449 on 8158 Progress: 2450 on 8158 Progress: 2451 on 8158 Progress: 2452 on 8158 Progress: 2453 on 8158 Progress: 2454 on 8158 Progress: 2455 on 8158 Progress: 2456 on 8158 Progress: 2457 on 8158 Progress: 2458 on 8158 Progress: 2459 on 8158 Progress: 2460 on 8158 Progress: 2461 on 8158 Progress: 2462 on 8158 Progress: 2463 on 8158 Progress: 2464 on 8158 Progress: 2465 on 8158 Progress: 2466 on 8158 Progress: 2467 on 8158 Progress: 2468 on 8158 Progress: 2469 on 8158 Progress: 2470 on 8158 Progress: 2471 on 8158 Progress: 2472 on 8158 Progress: 2473 on 8158 Progress: 2474 on 8158 Progress: 2475 on 8158 Progress: 2476 on 8158 Progress: 2477 on 8158 Progress: 2478 on 8158 Progress: 2479 on 8158 Progress: 2480 on 8158 Progress: 2481 on 8158 Progress: 2482 on 8158 Progress: 2483 on 8158 Progress: 2484 on 8158 Progress: 2485 on 8158 Progress: 2486 on 8158 Progress: 2487 on 8158 Progress: 2488 on 8158 Progress: 2489 on 8158 Progress: 2490 on 8158 Progress: 2491 on 8158 Progress: 2492 on 8158 Progress: 2493 on 8158 Progress: 2494 on 8158 Progress: 2495 on 8158 Progress: 2496 on 8158 Progress: 2497 on 8158 Progress: 2498 on 8158 Progress: 2499 on 8158 Progress: 2500 on 8158 Progress: 2501 on 8158 Progress: 2502 on 8158 Progress: 2503 on 8158 Progress: 2504 on 8158 Progress: 2505 on 8158 Progress: 2506 on 8158 Progress: 2507 on 8158 Progress: 2508 on 8158 Progress: 2509 on 8158 Progress: 2510 on 8158 Progress: 2511 on 8158 Progress: 2512 on 8158 Progress: 2513 on 8158 Progress: 2514 on 8158 Progress: 2515 on 8158 Progress: 2516 on 8158 Progress: 2517 on 8158 Progress: 2518 on 8158 Progress: 2519 on 8158 Progress: 2520 on 8158 Progress: 2521 on 8158 Progress: 2522 on 8158 Progress: 2523 on 8158 Progress: 2524 on 8158 Progress: 2525 on 8158 Progress: 2526 on 8158 Progress: 2527 on 8158 Progress: 2528 on 8158 Progress: 2529 on 8158 Progress: 2530 on 8158 Progress: 2531 on 8158 Progress: 2532 on 8158 Progress: 2533 on 8158 Progress: 2534 on 8158 Progress: 2535 on 8158 Progress: 2536 on 8158 Progress: 2537 on 8158 Progress: 2538 on 8158 Progress: 2539 on 8158 Progress: 2540 on 8158 Progress: 2541 on 8158 Progress: 2542 on 8158 Progress: 2543 on 8158 Progress: 2544 on 8158 Progress: 2545 on 8158 Progress: 2546 on 8158 Progress: 2547 on 8158 Progress: 2548 on 8158 Progress: 2549 on 8158 Progress: 2550 on 8158 Progress: 2551 on 8158 Progress: 2552 on 8158 Progress: 2553 on 8158 Progress: 2554 on 8158 Progress: 2555 on 8158 Progress: 2556 on 8158 Progress: 2557 on 8158 Progress: 2558 on 8158 Progress: 2559 on 8158 Progress: 2560 on 8158 Progress: 2561 on 8158 Progress: 2562 on 8158 Progress: 2563 on 8158 Progress: 2564 on 8158 Progress: 2565 on 8158 Progress: 2566 on 8158 Progress: 2567 on 8158 Progress: 2568 on 8158 Progress: 2569 on 8158 Progress: 2570 on 8158 Progress: 2571 on 8158 Progress: 2572 on 8158 Progress: 2573 on 8158 Progress: 2574 on 8158 Progress: 2575 on 8158 Progress: 2576 on 8158 Progress: 2577 on 8158 Progress: 2578 on 8158 Progress: 2579 on 8158 Progress: 2580 on 8158 Progress: 2581 on 8158 Progress: 2582 on 8158 Progress: 2583 on 8158 Progress: 2584 on 8158 Progress: 2585 on 8158 Progress: 2586 on 8158 Progress: 2587 on 8158 Progress: 2588 on 8158 Progress: 2589 on 8158 Progress: 2590 on 8158 Progress: 2591 on 8158 Progress: 2592 on 8158 Progress: 2593 on 8158 Progress: 2594 on 8158 Progress: 2595 on 8158 Progress: 2596 on 8158 Progress: 2597 on 8158 Progress: 2598 on 8158 Progress: 2599 on 8158 Progress: 2600 on 8158 Progress: 2601 on 8158 Progress: 2602 on 8158 Progress: 2603 on 8158 Progress: 2604 on 8158 Progress: 2605 on 8158 Progress: 2606 on 8158 Progress: 2607 on 8158 Progress: 2608 on 8158 Progress: 2609 on 8158 Progress: 2610 on 8158 Progress: 2611 on 8158 Progress: 2612 on 8158 Progress: 2613 on 8158 Progress: 2614 on 8158 Progress: 2615 on 8158 Progress: 2616 on 8158 Progress: 2617 on 8158 Progress: 2618 on 8158 Progress: 2619 on 8158 Progress: 2620 on 8158 Progress: 2621 on 8158 Progress: 2622 on 8158 Progress: 2623 on 8158 Progress: 2624 on 8158 Progress: 2625 on 8158 Progress: 2626 on 8158 Progress: 2627 on 8158 Progress: 2628 on 8158 Progress: 2629 on 8158 Progress: 2630 on 8158 Progress: 2631 on 8158 Progress: 2632 on 8158 Progress: 2633 on 8158 Progress: 2634 on 8158 Progress: 2635 on 8158 Progress: 2636 on 8158 Progress: 2637 on 8158 Progress: 2638 on 8158 Progress: 2639 on 8158 Progress: 2640 on 8158 Progress: 2641 on 8158 Progress: 2642 on 8158 Progress: 2643 on 8158 Progress: 2644 on 8158 Progress: 2645 on 8158 Progress: 2646 on 8158 Progress: 2647 on 8158 Progress: 2648 on 8158 Progress: 2649 on 8158 Progress: 2650 on 8158 Progress: 2651 on 8158 Progress: 2652 on 8158 Progress: 2653 on 8158 Progress: 2654 on 8158 Progress: 2655 on 8158 Progress: 2656 on 8158 Progress: 2657 on 8158 Progress: 2658 on 8158 Progress: 2659 on 8158 Progress: 2660 on 8158 Progress: 2661 on 8158 Progress: 2662 on 8158 Progress: 2663 on 8158 Progress: 2664 on 8158 Progress: 2665 on 8158 Progress: 2666 on 8158 Progress: 2667 on 8158 Progress: 2668 on 8158 Progress: 2669 on 8158 Progress: 2670 on 8158 Progress: 2671 on 8158 Progress: 2672 on 8158 Progress: 2673 on 8158 Progress: 2674 on 8158 Progress: 2675 on 8158 Progress: 2676 on 8158 Progress: 2677 on 8158 Progress: 2678 on 8158 Progress: 2679 on 8158 Progress: 2680 on 8158 Progress: 2681 on 8158 Progress: 2682 on 8158 Progress: 2683 on 8158 Progress: 2684 on 8158 Progress: 2685 on 8158 Progress: 2686 on 8158 Progress: 2687 on 8158 Progress: 2688 on 8158 Progress: 2689 on 8158 Progress: 2690 on 8158 Progress: 2691 on 8158 Progress: 2692 on 8158 Progress: 2693 on 8158 Progress: 2694 on 8158 Progress: 2695 on 8158 Progress: 2696 on 8158 Progress: 2697 on 8158 Progress: 2698 on 8158 Progress: 2699 on 8158 Progress: 2700 on 8158 Progress: 2701 on 8158 Progress: 2702 on 8158 Progress: 2703 on 8158 Progress: 2704 on 8158 Progress: 2705 on 8158 Progress: 2706 on 8158 Progress: 2707 on 8158 Progress: 2708 on 8158 Progress: 2709 on 8158 Progress: 2710 on 8158 Progress: 2711 on 8158 Progress: 2712 on 8158 Progress: 2713 on 8158 Progress: 2714 on 8158 Progress: 2715 on 8158 Progress: 2716 on 8158 Progress: 2717 on 8158 Progress: 2718 on 8158 Progress: 2719 on 8158 Progress: 2720 on 8158 Progress: 2721 on 8158 Progress: 2722 on 8158 Progress: 2723 on 8158 Progress: 2724 on 8158 Progress: 2725 on 8158 Progress: 2726 on 8158 Progress: 2727 on 8158 Progress: 2728 on 8158 Progress: 2729 on 8158 Progress: 2730 on 8158 Progress: 2731 on 8158 Progress: 2732 on 8158 Progress: 2733 on 8158 Progress: 2734 on 8158 Progress: 2735 on 8158 Progress: 2736 on 8158 Progress: 2737 on 8158 Progress: 2738 on 8158 Progress: 2739 on 8158 Progress: 2740 on 8158 Progress: 2741 on 8158 Progress: 2742 on 8158 Progress: 2743 on 8158 Progress: 2744 on 8158 Progress: 2745 on 8158 Progress: 2746 on 8158 Progress: 2747 on 8158 Progress: 2748 on 8158 Progress: 2749 on 8158 Progress: 2750 on 8158 Progress: 2751 on 8158 Progress: 2752 on 8158 Progress: 2753 on 8158 Progress: 2754 on 8158 Progress: 2755 on 8158 Progress: 2756 on 8158 Progress: 2757 on 8158 Progress: 2758 on 8158 Progress: 2759 on 8158 Progress: 2760 on 8158 Progress: 2761 on 8158 Progress: 2762 on 8158 Progress: 2763 on 8158 Progress: 2764 on 8158 Progress: 2765 on 8158 Progress: 2766 on 8158 Progress: 2767 on 8158 Progress: 2768 on 8158 Progress: 2769 on 8158 Progress: 2770 on 8158 Progress: 2771 on 8158 Progress: 2772 on 8158 Progress: 2773 on 8158 Progress: 2774 on 8158 Progress: 2775 on 8158 Progress: 2776 on 8158 Progress: 2777 on 8158 Progress: 2778 on 8158 Progress: 2779 on 8158 Progress: 2780 on 8158 Progress: 2781 on 8158 Progress: 2782 on 8158 Progress: 2783 on 8158 Progress: 2784 on 8158 Progress: 2785 on 8158 Progress: 2786 on 8158 Progress: 2787 on 8158 Progress: 2788 on 8158 Progress: 2789 on 8158 Progress: 2790 on 8158 Progress: 2791 on 8158 Progress: 2792 on 8158 Progress: 2793 on 8158 Progress: 2794 on 8158 Progress: 2795 on 8158 Progress: 2796 on 8158 Progress: 2797 on 8158 Progress: 2798 on 8158 Progress: 2799 on 8158 Progress: 2800 on 8158 Progress: 2801 on 8158 Progress: 2802 on 8158 Progress: 2803 on 8158 Progress: 2804 on 8158 Progress: 2805 on 8158 Progress: 2806 on 8158 Progress: 2807 on 8158 Progress: 2808 on 8158 Progress: 2809 on 8158 Progress: 2810 on 8158 Progress: 2811 on 8158 Progress: 2812 on 8158 Progress: 2813 on 8158 Progress: 2814 on 8158 Progress: 2815 on 8158 Progress: 2816 on 8158 Progress: 2817 on 8158 Progress: 2818 on 8158 Progress: 2819 on 8158 Progress: 2820 on 8158 Progress: 2821 on 8158 Progress: 2822 on 8158 Progress: 2823 on 8158 Progress: 2824 on 8158 Progress: 2825 on 8158 Progress: 2826 on 8158 Progress: 2827 on 8158 Progress: 2828 on 8158 Progress: 2829 on 8158 Progress: 2830 on 8158 Progress: 2831 on 8158 Progress: 2832 on 8158 Progress: 2833 on 8158 Progress: 2834 on 8158 Progress: 2835 on 8158 Progress: 2836 on 8158 Progress: 2837 on 8158 Progress: 2838 on 8158 Progress: 2839 on 8158 Progress: 2840 on 8158 Progress: 2841 on 8158 Progress: 2842 on 8158 Progress: 2843 on 8158 Progress: 2844 on 8158 Progress: 2845 on 8158 Progress: 2846 on 8158 Progress: 2847 on 8158 Progress: 2848 on 8158 Progress: 2849 on 8158 Progress: 2850 on 8158 Progress: 2851 on 8158 Progress: 2852 on 8158 Progress: 2853 on 8158 Progress: 2854 on 8158 Progress: 2855 on 8158 Progress: 2856 on 8158 Progress: 2857 on 8158 Progress: 2858 on 8158 Progress: 2859 on 8158 Progress: 2860 on 8158 Progress: 2861 on 8158 Progress: 2862 on 8158 Progress: 2863 on 8158 Progress: 2864 on 8158 Progress: 2865 on 8158 Progress: 2866 on 8158 Progress: 2867 on 8158 Progress: 2868 on 8158 Progress: 2869 on 8158 Progress: 2870 on 8158 Progress: 2871 on 8158 Progress: 2872 on 8158 Progress: 2873 on 8158 Progress: 2874 on 8158 Progress: 2875 on 8158 Progress: 2876 on 8158 Progress: 2877 on 8158 Progress: 2878 on 8158 Progress: 2879 on 8158 Progress: 2880 on 8158 Progress: 2881 on 8158 Progress: 2882 on 8158 Progress: 2883 on 8158 Progress: 2884 on 8158 Progress: 2885 on 8158 Progress: 2886 on 8158 Progress: 2887 on 8158 Progress: 2888 on 8158 Progress: 2889 on 8158 Progress: 2890 on 8158 Progress: 2891 on 8158 Progress: 2892 on 8158 Progress: 2893 on 8158 Progress: 2894 on 8158 Progress: 2895 on 8158 Progress: 2896 on 8158 Progress: 2897 on 8158 Progress: 2898 on 8158 Progress: 2899 on 8158 Progress: 2900 on 8158 Progress: 2901 on 8158 Progress: 2902 on 8158 Progress: 2903 on 8158 Progress: 2904 on 8158 Progress: 2905 on 8158 Progress: 2906 on 8158 Progress: 2907 on 8158 Progress: 2908 on 8158 Progress: 2909 on 8158 Progress: 2910 on 8158 Progress: 2911 on 8158 Progress: 2912 on 8158 Progress: 2913 on 8158 Progress: 2914 on 8158 Progress: 2915 on 8158 Progress: 2916 on 8158 Progress: 2917 on 8158 Progress: 2918 on 8158 Progress: 2919 on 8158 Progress: 2920 on 8158 Progress: 2921 on 8158 Progress: 2922 on 8158 Progress: 2923 on 8158 Progress: 2924 on 8158 Progress: 2925 on 8158 Progress: 2926 on 8158 Progress: 2927 on 8158 Progress: 2928 on 8158 Progress: 2929 on 8158 Progress: 2930 on 8158 Progress: 2931 on 8158 Progress: 2932 on 8158 Progress: 2933 on 8158 Progress: 2934 on 8158 Progress: 2935 on 8158 Progress: 2936 on 8158 Progress: 2937 on 8158 Progress: 2938 on 8158 Progress: 2939 on 8158 Progress: 2940 on 8158 Progress: 2941 on 8158 Progress: 2942 on 8158 Progress: 2943 on 8158 Progress: 2944 on 8158 Progress: 2945 on 8158 Progress: 2946 on 8158 Progress: 2947 on 8158 Progress: 2948 on 8158 Progress: 2949 on 8158 Progress: 2950 on 8158 Progress: 2951 on 8158 Progress: 2952 on 8158 Progress: 2953 on 8158 Progress: 2954 on 8158 Progress: 2955 on 8158 Progress: 2956 on 8158 Progress: 2957 on 8158 Progress: 2958 on 8158 Progress: 2959 on 8158 Progress: 2960 on 8158 Progress: 2961 on 8158 Progress: 2962 on 8158 Progress: 2963 on 8158 Progress: 2964 on 8158 Progress: 2965 on 8158 Progress: 2966 on 8158 Progress: 2967 on 8158 Progress: 2968 on 8158 Progress: 2969 on 8158 Progress: 2970 on 8158 Progress: 2971 on 8158 Progress: 2972 on 8158 Progress: 2973 on 8158 Progress: 2974 on 8158 Progress: 2975 on 8158 Progress: 2976 on 8158 Progress: 2977 on 8158 Progress: 2978 on 8158 Progress: 2979 on 8158 Progress: 2980 on 8158 Progress: 2981 on 8158 Progress: 2982 on 8158 Progress: 2983 on 8158 Progress: 2984 on 8158 Progress: 2985 on 8158 Progress: 2986 on 8158 Progress: 2987 on 8158 Progress: 2988 on 8158 Progress: 2989 on 8158 Progress: 2990 on 8158 Progress: 2991 on 8158 Progress: 2992 on 8158 Progress: 2993 on 8158 Progress: 2994 on 8158 Progress: 2995 on 8158 Progress: 2996 on 8158 Progress: 2997 on 8158 Progress: 2998 on 8158 Progress: 2999 on 8158 Progress: 3000 on 8158 Progress: 3001 on 8158 Progress: 3002 on 8158 Progress: 3003 on 8158 Progress: 3004 on 8158 Progress: 3005 on 8158 Progress: 3006 on 8158 Progress: 3007 on 8158 Progress: 3008 on 8158 Progress: 3009 on 8158 Progress: 3010 on 8158 Progress: 3011 on 8158 Progress: 3012 on 8158 Progress: 3013 on 8158 Progress: 3014 on 8158 Progress: 3015 on 8158 Progress: 3016 on 8158 Progress: 3017 on 8158 Progress: 3018 on 8158 Progress: 3019 on 8158 Progress: 3020 on 8158 Progress: 3021 on 8158 Progress: 3022 on 8158 Progress: 3023 on 8158 Progress: 3024 on 8158 Progress: 3025 on 8158 Progress: 3026 on 8158 Progress: 3027 on 8158 Progress: 3028 on 8158 Progress: 3029 on 8158 Progress: 3030 on 8158 Progress: 3031 on 8158 Progress: 3032 on 8158 Progress: 3033 on 8158 Progress: 3034 on 8158 Progress: 3035 on 8158 Progress: 3036 on 8158 Progress: 3037 on 8158 Progress: 3038 on 8158 Progress: 3039 on 8158 Progress: 3040 on 8158 Progress: 3041 on 8158 Progress: 3042 on 8158 Progress: 3043 on 8158 Progress: 3044 on 8158 Progress: 3045 on 8158 Progress: 3046 on 8158 Progress: 3047 on 8158 Progress: 3048 on 8158 Progress: 3049 on 8158 Progress: 3050 on 8158 Progress: 3051 on 8158 Progress: 3052 on 8158 Progress: 3053 on 8158 Progress: 3054 on 8158 Progress: 3055 on 8158 Progress: 3056 on 8158 Progress: 3057 on 8158 Progress: 3058 on 8158 Progress: 3059 on 8158 Progress: 3060 on 8158 Progress: 3061 on 8158 Progress: 3062 on 8158 Progress: 3063 on 8158 Progress: 3064 on 8158 Progress: 3065 on 8158 Progress: 3066 on 8158 Progress: 3067 on 8158 Progress: 3068 on 8158 Progress: 3069 on 8158 Progress: 3070 on 8158 Progress: 3071 on 8158 Progress: 3072 on 8158 Progress: 3073 on 8158 Progress: 3074 on 8158 Progress: 3075 on 8158 Progress: 3076 on 8158 Progress: 3077 on 8158 Progress: 3078 on 8158 Progress: 3079 on 8158 Progress: 3080 on 8158 Progress: 3081 on 8158 Progress: 3082 on 8158 Progress: 3083 on 8158 Progress: 3084 on 8158 Progress: 3085 on 8158 Progress: 3086 on 8158 Progress: 3087 on 8158 Progress: 3088 on 8158 Progress: 3089 on 8158 Progress: 3090 on 8158 Progress: 3091 on 8158 Progress: 3092 on 8158 Progress: 3093 on 8158 Progress: 3094 on 8158 Progress: 3095 on 8158 Progress: 3096 on 8158 Progress: 3097 on 8158 Progress: 3098 on 8158 Progress: 3099 on 8158 Progress: 3100 on 8158 Progress: 3101 on 8158 Progress: 3102 on 8158 Progress: 3103 on 8158 Progress: 3104 on 8158 Progress: 3105 on 8158 Progress: 3106 on 8158 Progress: 3107 on 8158 Progress: 3108 on 8158 Progress: 3109 on 8158 Progress: 3110 on 8158 Progress: 3111 on 8158 Progress: 3112 on 8158 Progress: 3113 on 8158 Progress: 3114 on 8158 Progress: 3115 on 8158 Progress: 3116 on 8158 Progress: 3117 on 8158 Progress: 3118 on 8158 Progress: 3119 on 8158 Progress: 3120 on 8158 Progress: 3121 on 8158 Progress: 3122 on 8158 Progress: 3123 on 8158 Progress: 3124 on 8158 Progress: 3125 on 8158 Progress: 3126 on 8158 Progress: 3127 on 8158 Progress: 3128 on 8158 Progress: 3129 on 8158 Progress: 3130 on 8158 Progress: 3131 on 8158 Progress: 3132 on 8158 Progress: 3133 on 8158 Progress: 3134 on 8158 Progress: 3135 on 8158 Progress: 3136 on 8158 Progress: 3137 on 8158 Progress: 3138 on 8158 Progress: 3139 on 8158 Progress: 3140 on 8158 Progress: 3141 on 8158 Progress: 3142 on 8158 Progress: 3143 on 8158 Progress: 3144 on 8158 Progress: 3145 on 8158 Progress: 3146 on 8158 Progress: 3147 on 8158 Progress: 3148 on 8158 Progress: 3149 on 8158 Progress: 3150 on 8158 Progress: 3151 on 8158 Progress: 3152 on 8158 Progress: 3153 on 8158 Progress: 3154 on 8158 Progress: 3155 on 8158 Progress: 3156 on 8158 Progress: 3157 on 8158 Progress: 3158 on 8158 Progress: 3159 on 8158 Progress: 3160 on 8158 Progress: 3161 on 8158 Progress: 3162 on 8158 Progress: 3163 on 8158 Progress: 3164 on 8158 Progress: 3165 on 8158 Progress: 3166 on 8158 Progress: 3167 on 8158 Progress: 3168 on 8158 Progress: 3169 on 8158 Progress: 3170 on 8158 Progress: 3171 on 8158 Progress: 3172 on 8158 Progress: 3173 on 8158 Progress: 3174 on 8158 Progress: 3175 on 8158 Progress: 3176 on 8158 Progress: 3177 on 8158 Progress: 3178 on 8158 Progress: 3179 on 8158 Progress: 3180 on 8158 Progress: 3181 on 8158 Progress: 3182 on 8158 Progress: 3183 on 8158 Progress: 3184 on 8158 Progress: 3185 on 8158 Progress: 3186 on 8158 Progress: 3187 on 8158 Progress: 3188 on 8158 Progress: 3189 on 8158 Progress: 3190 on 8158 Progress: 3191 on 8158 Progress: 3192 on 8158 Progress: 3193 on 8158 Progress: 3194 on 8158 Progress: 3195 on 8158 Progress: 3196 on 8158 Progress: 3197 on 8158 Progress: 3198 on 8158 Progress: 3199 on 8158 Progress: 3200 on 8158 Progress: 3201 on 8158 Progress: 3202 on 8158 Progress: 3203 on 8158 Progress: 3204 on 8158 Progress: 3205 on 8158 Progress: 3206 on 8158 Progress: 3207 on 8158 Progress: 3208 on 8158 Progress: 3209 on 8158 Progress: 3210 on 8158 Progress: 3211 on 8158 Progress: 3212 on 8158 Progress: 3213 on 8158 Progress: 3214 on 8158 Progress: 3215 on 8158 Progress: 3216 on 8158 Progress: 3217 on 8158 Progress: 3218 on 8158 Progress: 3219 on 8158 Progress: 3220 on 8158 Progress: 3221 on 8158 Progress: 3222 on 8158 Progress: 3223 on 8158 Progress: 3224 on 8158 Progress: 3225 on 8158 Progress: 3226 on 8158 Progress: 3227 on 8158 Progress: 3228 on 8158 Progress: 3229 on 8158 Progress: 3230 on 8158 Progress: 3231 on 8158 Progress: 3232 on 8158 Progress: 3233 on 8158 Progress: 3234 on 8158 Progress: 3235 on 8158 Progress: 3236 on 8158 Progress: 3237 on 8158 Progress: 3238 on 8158 Progress: 3239 on 8158 Progress: 3240 on 8158 Progress: 3241 on 8158 Progress: 3242 on 8158 Progress: 3243 on 8158 Progress: 3244 on 8158 Progress: 3245 on 8158 Progress: 3246 on 8158 Progress: 3247 on 8158 Progress: 3248 on 8158 Progress: 3249 on 8158 Progress: 3250 on 8158 Progress: 3251 on 8158 Progress: 3252 on 8158 Progress: 3253 on 8158 Progress: 3254 on 8158 Progress: 3255 on 8158 Progress: 3256 on 8158 Progress: 3257 on 8158 Progress: 3258 on 8158 Progress: 3259 on 8158 Progress: 3260 on 8158 Progress: 3261 on 8158 Progress: 3262 on 8158 Progress: 3263 on 8158 Progress: 3264 on 8158 Progress: 3265 on 8158 Progress: 3266 on 8158 Progress: 3267 on 8158 Progress: 3268 on 8158 Progress: 3269 on 8158 Progress: 3270 on 8158 Progress: 3271 on 8158 Progress: 3272 on 8158 Progress: 3273 on 8158 Progress: 3274 on 8158 Progress: 3275 on 8158 Progress: 3276 on 8158 Progress: 3277 on 8158 Progress: 3278 on 8158 Progress: 3279 on 8158 Progress: 3280 on 8158 Progress: 3281 on 8158 Progress: 3282 on 8158 Progress: 3283 on 8158 Progress: 3284 on 8158 Progress: 3285 on 8158 Progress: 3286 on 8158 Progress: 3287 on 8158 Progress: 3288 on 8158 Progress: 3289 on 8158 Progress: 3290 on 8158 Progress: 3291 on 8158 Progress: 3292 on 8158 Progress: 3293 on 8158 Progress: 3294 on 8158 Progress: 3295 on 8158 Progress: 3296 on 8158 Progress: 3297 on 8158 Progress: 3298 on 8158 Progress: 3299 on 8158 Progress: 3300 on 8158 Progress: 3301 on 8158 Progress: 3302 on 8158 Progress: 3303 on 8158 Progress: 3304 on 8158 Progress: 3305 on 8158 Progress: 3306 on 8158 Progress: 3307 on 8158 Progress: 3308 on 8158 Progress: 3309 on 8158 Progress: 3310 on 8158 Progress: 3311 on 8158 Progress: 3312 on 8158 Progress: 3313 on 8158 Progress: 3314 on 8158 Progress: 3315 on 8158 Progress: 3316 on 8158 Progress: 3317 on 8158 Progress: 3318 on 8158 Progress: 3319 on 8158 Progress: 3320 on 8158 Progress: 3321 on 8158 Progress: 3322 on 8158 Progress: 3323 on 8158 Progress: 3324 on 8158 Progress: 3325 on 8158 Progress: 3326 on 8158 Progress: 3327 on 8158 Progress: 3328 on 8158 Progress: 3329 on 8158 Progress: 3330 on 8158 Progress: 3331 on 8158 Progress: 3332 on 8158 Progress: 3333 on 8158 Progress: 3334 on 8158 Progress: 3335 on 8158 Progress: 3336 on 8158 Progress: 3337 on 8158 Progress: 3338 on 8158 Progress: 3339 on 8158 Progress: 3340 on 8158 Progress: 3341 on 8158 Progress: 3342 on 8158 Progress: 3343 on 8158 Progress: 3344 on 8158 Progress: 3345 on 8158 Progress: 3346 on 8158 Progress: 3347 on 8158 Progress: 3348 on 8158 Progress: 3349 on 8158 Progress: 3350 on 8158 Progress: 3351 on 8158 Progress: 3352 on 8158 Progress: 3353 on 8158 Progress: 3354 on 8158 Progress: 3355 on 8158 Progress: 3356 on 8158 Progress: 3357 on 8158 Progress: 3358 on 8158 Progress: 3359 on 8158 Progress: 3360 on 8158 Progress: 3361 on 8158 Progress: 3362 on 8158 Progress: 3363 on 8158 Progress: 3364 on 8158 Progress: 3365 on 8158 Progress: 3366 on 8158 Progress: 3367 on 8158 Progress: 3368 on 8158 Progress: 3369 on 8158 Progress: 3370 on 8158 Progress: 3371 on 8158 Progress: 3372 on 8158 Progress: 3373 on 8158 Progress: 3374 on 8158 Progress: 3375 on 8158 Progress: 3376 on 8158 Progress: 3377 on 8158 Progress: 3378 on 8158 Progress: 3379 on 8158 Progress: 3380 on 8158 Progress: 3381 on 8158 Progress: 3382 on 8158 Progress: 3383 on 8158 Progress: 3384 on 8158 Progress: 3385 on 8158 Progress: 3386 on 8158 Progress: 3387 on 8158 Progress: 3388 on 8158 Progress: 3389 on 8158 Progress: 3390 on 8158 Progress: 3391 on 8158 Progress: 3392 on 8158 Progress: 3393 on 8158 Progress: 3394 on 8158 Progress: 3395 on 8158 Progress: 3396 on 8158 Progress: 3397 on 8158 Progress: 3398 on 8158 Progress: 3399 on 8158 Progress: 3400 on 8158 Progress: 3401 on 8158 Progress: 3402 on 8158 Progress: 3403 on 8158 Progress: 3404 on 8158 Progress: 3405 on 8158 Progress: 3406 on 8158 Progress: 3407 on 8158 Progress: 3408 on 8158 Progress: 3409 on 8158 Progress: 3410 on 8158 Progress: 3411 on 8158 Progress: 3412 on 8158 Progress: 3413 on 8158 Progress: 3414 on 8158 Progress: 3415 on 8158 Progress: 3416 on 8158 Progress: 3417 on 8158 Progress: 3418 on 8158 Progress: 3419 on 8158 Progress: 3420 on 8158 Progress: 3421 on 8158 Progress: 3422 on 8158 Progress: 3423 on 8158 Progress: 3424 on 8158 Progress: 3425 on 8158 Progress: 3426 on 8158 Progress: 3427 on 8158 Progress: 3428 on 8158 Progress: 3429 on 8158 Progress: 3430 on 8158 Progress: 3431 on 8158 Progress: 3432 on 8158 Progress: 3433 on 8158 Progress: 3434 on 8158 Progress: 3435 on 8158 Progress: 3436 on 8158 Progress: 3437 on 8158 Progress: 3438 on 8158 Progress: 3439 on 8158 Progress: 3440 on 8158 Progress: 3441 on 8158 Progress: 3442 on 8158 Progress: 3443 on 8158 Progress: 3444 on 8158 Progress: 3445 on 8158 Progress: 3446 on 8158 Progress: 3447 on 8158 Progress: 3448 on 8158 Progress: 3449 on 8158 Progress: 3450 on 8158 Progress: 3451 on 8158 Progress: 3452 on 8158 Progress: 3453 on 8158 Progress: 3454 on 8158 Progress: 3455 on 8158 Progress: 3456 on 8158 Progress: 3457 on 8158 Progress: 3458 on 8158 Progress: 3459 on 8158 Progress: 3460 on 8158 Progress: 3461 on 8158 Progress: 3462 on 8158 Progress: 3463 on 8158 Progress: 3464 on 8158 Progress: 3465 on 8158 Progress: 3466 on 8158 Progress: 3467 on 8158 Progress: 3468 on 8158 Progress: 3469 on 8158 Progress: 3470 on 8158 Progress: 3471 on 8158 Progress: 3472 on 8158 Progress: 3473 on 8158 Progress: 3474 on 8158 Progress: 3475 on 8158 Progress: 3476 on 8158 Progress: 3477 on 8158 Progress: 3478 on 8158 Progress: 3479 on 8158 Progress: 3480 on 8158 Progress: 3481 on 8158 Progress: 3482 on 8158 Progress: 3483 on 8158 Progress: 3484 on 8158 Progress: 3485 on 8158 Progress: 3486 on 8158 Progress: 3487 on 8158 Progress: 3488 on 8158 Progress: 3489 on 8158 Progress: 3490 on 8158 Progress: 3491 on 8158 Progress: 3492 on 8158 Progress: 3493 on 8158 Progress: 3494 on 8158 Progress: 3495 on 8158 Progress: 3496 on 8158 Progress: 3497 on 8158 Progress: 3498 on 8158 Progress: 3499 on 8158 Progress: 3500 on 8158 Progress: 3501 on 8158 Progress: 3502 on 8158 Progress: 3503 on 8158 Progress: 3504 on 8158 Progress: 3505 on 8158 Progress: 3506 on 8158 Progress: 3507 on 8158 Progress: 3508 on 8158 Progress: 3509 on 8158 Progress: 3510 on 8158 Progress: 3511 on 8158 Progress: 3512 on 8158 Progress: 3513 on 8158 Progress: 3514 on 8158 Progress: 3515 on 8158 Progress: 3516 on 8158 Progress: 3517 on 8158 Progress: 3518 on 8158 Progress: 3519 on 8158 Progress: 3520 on 8158 Progress: 3521 on 8158 Progress: 3522 on 8158 Progress: 3523 on 8158 Progress: 3524 on 8158 Progress: 3525 on 8158 Progress: 3526 on 8158 Progress: 3527 on 8158 Progress: 3528 on 8158 Progress: 3529 on 8158 Progress: 3530 on 8158 Progress: 3531 on 8158 Progress: 3532 on 8158 Progress: 3533 on 8158 Progress: 3534 on 8158 Progress: 3535 on 8158 Progress: 3536 on 8158 Progress: 3537 on 8158 Progress: 3538 on 8158 Progress: 3539 on 8158 Progress: 3540 on 8158 Progress: 3541 on 8158 Progress: 3542 on 8158 Progress: 3543 on 8158 Progress: 3544 on 8158 Progress: 3545 on 8158 Progress: 3546 on 8158 Progress: 3547 on 8158 Progress: 3548 on 8158 Progress: 3549 on 8158 Progress: 3550 on 8158 Progress: 3551 on 8158 Progress: 3552 on 8158 Progress: 3553 on 8158 Progress: 3554 on 8158 Progress: 3555 on 8158 Progress: 3556 on 8158 Progress: 3557 on 8158 Progress: 3558 on 8158 Progress: 3559 on 8158 Progress: 3560 on 8158 Progress: 3561 on 8158 Progress: 3562 on 8158 Progress: 3563 on 8158 Progress: 3564 on 8158 Progress: 3565 on 8158 Progress: 3566 on 8158 Progress: 3567 on 8158 Progress: 3568 on 8158 Progress: 3569 on 8158 Progress: 3570 on 8158 Progress: 3571 on 8158 Progress: 3572 on 8158 Progress: 3573 on 8158 Progress: 3574 on 8158 Progress: 3575 on 8158 Progress: 3576 on 8158 Progress: 3577 on 8158 Progress: 3578 on 8158 Progress: 3579 on 8158 Progress: 3580 on 8158 Progress: 3581 on 8158 Progress: 3582 on 8158 Progress: 3583 on 8158 Progress: 3584 on 8158 Progress: 3585 on 8158 Progress: 3586 on 8158 Progress: 3587 on 8158 Progress: 3588 on 8158 Progress: 3589 on 8158 Progress: 3590 on 8158 Progress: 3591 on 8158 Progress: 3592 on 8158 Progress: 3593 on 8158 Progress: 3594 on 8158 Progress: 3595 on 8158 Progress: 3596 on 8158 Progress: 3597 on 8158 Progress: 3598 on 8158 Progress: 3599 on 8158 Progress: 3600 on 8158 Progress: 3601 on 8158 Progress: 3602 on 8158 Progress: 3603 on 8158 Progress: 3604 on 8158 Progress: 3605 on 8158 Progress: 3606 on 8158 Progress: 3607 on 8158 Progress: 3608 on 8158 Progress: 3609 on 8158 Progress: 3610 on 8158 Progress: 3611 on 8158 Progress: 3612 on 8158 Progress: 3613 on 8158 Progress: 3614 on 8158 Progress: 3615 on 8158 Progress: 3616 on 8158 Progress: 3617 on 8158 Progress: 3618 on 8158 Progress: 3619 on 8158 Progress: 3620 on 8158 Progress: 3621 on 8158 Progress: 3622 on 8158 Progress: 3623 on 8158 Progress: 3624 on 8158 Progress: 3625 on 8158 Progress: 3626 on 8158 Progress: 3627 on 8158 Progress: 3628 on 8158 Progress: 3629 on 8158 Progress: 3630 on 8158 Progress: 3631 on 8158 Progress: 3632 on 8158 Progress: 3633 on 8158 Progress: 3634 on 8158 Progress: 3635 on 8158 Progress: 3636 on 8158 Progress: 3637 on 8158 Progress: 3638 on 8158 Progress: 3639 on 8158 Progress: 3640 on 8158 Progress: 3641 on 8158 Progress: 3642 on 8158 Progress: 3643 on 8158 Progress: 3644 on 8158 Progress: 3645 on 8158 Progress: 3646 on 8158 Progress: 3647 on 8158 Progress: 3648 on 8158 Progress: 3649 on 8158 Progress: 3650 on 8158 Progress: 3651 on 8158 Progress: 3652 on 8158 Progress: 3653 on 8158 Progress: 3654 on 8158 Progress: 3655 on 8158 Progress: 3656 on 8158 Progress: 3657 on 8158 Progress: 3658 on 8158 Progress: 3659 on 8158 Progress: 3660 on 8158 Progress: 3661 on 8158 Progress: 3662 on 8158 Progress: 3663 on 8158 Progress: 3664 on 8158 Progress: 3665 on 8158 Progress: 3666 on 8158 Progress: 3667 on 8158 Progress: 3668 on 8158 Progress: 3669 on 8158 Progress: 3670 on 8158 Progress: 3671 on 8158 Progress: 3672 on 8158 Progress: 3673 on 8158 Progress: 3674 on 8158 Progress: 3675 on 8158 Progress: 3676 on 8158 Progress: 3677 on 8158 Progress: 3678 on 8158 Progress: 3679 on 8158 Progress: 3680 on 8158 Progress: 3681 on 8158 Progress: 3682 on 8158 Progress: 3683 on 8158 Progress: 3684 on 8158 Progress: 3685 on 8158 Progress: 3686 on 8158 Progress: 3687 on 8158 Progress: 3688 on 8158 Progress: 3689 on 8158 Progress: 3690 on 8158 Progress: 3691 on 8158 Progress: 3692 on 8158 Progress: 3693 on 8158 Progress: 3694 on 8158 Progress: 3695 on 8158 Progress: 3696 on 8158 Progress: 3697 on 8158 Progress: 3698 on 8158 Progress: 3699 on 8158 Progress: 3700 on 8158 Progress: 3701 on 8158 Progress: 3702 on 8158 Progress: 3703 on 8158 Progress: 3704 on 8158 Progress: 3705 on 8158 Progress: 3706 on 8158 Progress: 3707 on 8158 Progress: 3708 on 8158 Progress: 3709 on 8158 Progress: 3710 on 8158 Progress: 3711 on 8158 Progress: 3712 on 8158 Progress: 3713 on 8158 Progress: 3714 on 8158 Progress: 3715 on 8158 Progress: 3716 on 8158 Progress: 3717 on 8158 Progress: 3718 on 8158 Progress: 3719 on 8158 Progress: 3720 on 8158 Progress: 3721 on 8158 Progress: 3722 on 8158 Progress: 3723 on 8158 Progress: 3724 on 8158 Progress: 3725 on 8158 Progress: 3726 on 8158 Progress: 3727 on 8158 Progress: 3728 on 8158 Progress: 3729 on 8158 Progress: 3730 on 8158 Progress: 3731 on 8158 Progress: 3732 on 8158 Progress: 3733 on 8158 Progress: 3734 on 8158 Progress: 3735 on 8158 Progress: 3736 on 8158 Progress: 3737 on 8158 Progress: 3738 on 8158 Progress: 3739 on 8158 Progress: 3740 on 8158 Progress: 3741 on 8158 Progress: 3742 on 8158 Progress: 3743 on 8158 Progress: 3744 on 8158 Progress: 3745 on 8158 Progress: 3746 on 8158 Progress: 3747 on 8158 Progress: 3748 on 8158 Progress: 3749 on 8158 Progress: 3750 on 8158 Progress: 3751 on 8158 Progress: 3752 on 8158 Progress: 3753 on 8158 Progress: 3754 on 8158 Progress: 3755 on 8158 Progress: 3756 on 8158 Progress: 3757 on 8158 Progress: 3758 on 8158 Progress: 3759 on 8158 Progress: 3760 on 8158 Progress: 3761 on 8158 Progress: 3762 on 8158 Progress: 3763 on 8158 Progress: 3764 on 8158 Progress: 3765 on 8158 Progress: 3766 on 8158 Progress: 3767 on 8158 Progress: 3768 on 8158 Progress: 3769 on 8158 Progress: 3770 on 8158 Progress: 3771 on 8158 Progress: 3772 on 8158 Progress: 3773 on 8158 Progress: 3774 on 8158 Progress: 3775 on 8158 Progress: 3776 on 8158 Progress: 3777 on 8158 Progress: 3778 on 8158 Progress: 3779 on 8158 Progress: 3780 on 8158 Progress: 3781 on 8158 Progress: 3782 on 8158 Progress: 3783 on 8158 Progress: 3784 on 8158 Progress: 3785 on 8158 Progress: 3786 on 8158 Progress: 3787 on 8158 Progress: 3788 on 8158 Progress: 3789 on 8158 Progress: 3790 on 8158 Progress: 3791 on 8158 Progress: 3792 on 8158 Progress: 3793 on 8158 Progress: 3794 on 8158 Progress: 3795 on 8158 Progress: 3796 on 8158 Progress: 3797 on 8158 Progress: 3798 on 8158 Progress: 3799 on 8158 Progress: 3800 on 8158 Progress: 3801 on 8158 Progress: 3802 on 8158 Progress: 3803 on 8158 Progress: 3804 on 8158 Progress: 3805 on 8158 Progress: 3806 on 8158 Progress: 3807 on 8158 Progress: 3808 on 8158 Progress: 3809 on 8158 Progress: 3810 on 8158 Progress: 3811 on 8158 Progress: 3812 on 8158 Progress: 3813 on 8158 Progress: 3814 on 8158 Progress: 3815 on 8158 Progress: 3816 on 8158 Progress: 3817 on 8158 Progress: 3818 on 8158 Progress: 3819 on 8158 Progress: 3820 on 8158 Progress: 3821 on 8158 Progress: 3822 on 8158 Progress: 3823 on 8158 Progress: 3824 on 8158 Progress: 3825 on 8158 Progress: 3826 on 8158 Progress: 3827 on 8158 Progress: 3828 on 8158 Progress: 3829 on 8158 Progress: 3830 on 8158 Progress: 3831 on 8158 Progress: 3832 on 8158 Progress: 3833 on 8158 Progress: 3834 on 8158 Progress: 3835 on 8158 Progress: 3836 on 8158 Progress: 3837 on 8158 Progress: 3838 on 8158 Progress: 3839 on 8158 Progress: 3840 on 8158 Progress: 3841 on 8158 Progress: 3842 on 8158 Progress: 3843 on 8158 Progress: 3844 on 8158 Progress: 3845 on 8158 Progress: 3846 on 8158 Progress: 3847 on 8158 Progress: 3848 on 8158 Progress: 3849 on 8158 Progress: 3850 on 8158 Progress: 3851 on 8158 Progress: 3852 on 8158 Progress: 3853 on 8158 Progress: 3854 on 8158 Progress: 3855 on 8158 Progress: 3856 on 8158 Progress: 3857 on 8158 Progress: 3858 on 8158 Progress: 3859 on 8158 Progress: 3860 on 8158 Progress: 3861 on 8158 Progress: 3862 on 8158 Progress: 3863 on 8158 Progress: 3864 on 8158 Progress: 3865 on 8158 Progress: 3866 on 8158 Progress: 3867 on 8158 Progress: 3868 on 8158 Progress: 3869 on 8158 Progress: 3870 on 8158 Progress: 3871 on 8158 Progress: 3872 on 8158 Progress: 3873 on 8158 Progress: 3874 on 8158 Progress: 3875 on 8158 Progress: 3876 on 8158 Progress: 3877 on 8158 Progress: 3878 on 8158 Progress: 3879 on 8158 Progress: 3880 on 8158 Progress: 3881 on 8158 Progress: 3882 on 8158 Progress: 3883 on 8158 Progress: 3884 on 8158 Progress: 3885 on 8158 Progress: 3886 on 8158 Progress: 3887 on 8158 Progress: 3888 on 8158 Progress: 3889 on 8158 Progress: 3890 on 8158 Progress: 3891 on 8158 Progress: 3892 on 8158 Progress: 3893 on 8158 Progress: 3894 on 8158 Progress: 3895 on 8158 Progress: 3896 on 8158 Progress: 3897 on 8158 Progress: 3898 on 8158 Progress: 3899 on 8158 Progress: 3900 on 8158 Progress: 3901 on 8158 Progress: 3902 on 8158 Progress: 3903 on 8158 Progress: 3904 on 8158 Progress: 3905 on 8158 Progress: 3906 on 8158 Progress: 3907 on 8158 Progress: 3908 on 8158 Progress: 3909 on 8158 Progress: 3910 on 8158 Progress: 3911 on 8158 Progress: 3912 on 8158 Progress: 3913 on 8158 Progress: 3914 on 8158 Progress: 3915 on 8158 Progress: 3916 on 8158 Progress: 3917 on 8158 Progress: 3918 on 8158 Progress: 3919 on 8158 Progress: 3920 on 8158 Progress: 3921 on 8158 Progress: 3922 on 8158 Progress: 3923 on 8158 Progress: 3924 on 8158 Progress: 3925 on 8158 Progress: 3926 on 8158 Progress: 3927 on 8158 Progress: 3928 on 8158 Progress: 3929 on 8158 Progress: 3930 on 8158 Progress: 3931 on 8158 Progress: 3932 on 8158 Progress: 3933 on 8158 Progress: 3934 on 8158 Progress: 3935 on 8158 Progress: 3936 on 8158 Progress: 3937 on 8158 Progress: 3938 on 8158 Progress: 3939 on 8158 Progress: 3940 on 8158 Progress: 3941 on 8158 Progress: 3942 on 8158 Progress: 3943 on 8158 Progress: 3944 on 8158 Progress: 3945 on 8158 Progress: 3946 on 8158 Progress: 3947 on 8158 Progress: 3948 on 8158 Progress: 3949 on 8158 Progress: 3950 on 8158 Progress: 3951 on 8158 Progress: 3952 on 8158 Progress: 3953 on 8158 Progress: 3954 on 8158 Progress: 3955 on 8158 Progress: 3956 on 8158 Progress: 3957 on 8158 Progress: 3958 on 8158 Progress: 3959 on 8158 Progress: 3960 on 8158 Progress: 3961 on 8158 Progress: 3962 on 8158 Progress: 3963 on 8158 Progress: 3964 on 8158 Progress: 3965 on 8158 Progress: 3966 on 8158 Progress: 3967 on 8158 Progress: 3968 on 8158 Progress: 3969 on 8158 Progress: 3970 on 8158 Progress: 3971 on 8158 Progress: 3972 on 8158 Progress: 3973 on 8158 Progress: 3974 on 8158 Progress: 3975 on 8158 Progress: 3976 on 8158 Progress: 3977 on 8158 Progress: 3978 on 8158 Progress: 3979 on 8158 Progress: 3980 on 8158 Progress: 3981 on 8158 Progress: 3982 on 8158 Progress: 3983 on 8158 Progress: 3984 on 8158 Progress: 3985 on 8158 Progress: 3986 on 8158 Progress: 3987 on 8158 Progress: 3988 on 8158 Progress: 3989 on 8158 Progress: 3990 on 8158 Progress: 3991 on 8158 Progress: 3992 on 8158 Progress: 3993 on 8158 Progress: 3994 on 8158 Progress: 3995 on 8158 Progress: 3996 on 8158 Progress: 3997 on 8158 Progress: 3998 on 8158 Progress: 3999 on 8158 Progress: 4000 on 8158 Progress: 4001 on 8158 Progress: 4002 on 8158 Progress: 4003 on 8158 Progress: 4004 on 8158 Progress: 4005 on 8158 Progress: 4006 on 8158 Progress: 4007 on 8158 Progress: 4008 on 8158 Progress: 4009 on 8158 Progress: 4010 on 8158 Progress: 4011 on 8158 Progress: 4012 on 8158 Progress: 4013 on 8158 Progress: 4014 on 8158 Progress: 4015 on 8158 Progress: 4016 on 8158 Progress: 4017 on 8158 Progress: 4018 on 8158 Progress: 4019 on 8158 Progress: 4020 on 8158 Progress: 4021 on 8158 Progress: 4022 on 8158 Progress: 4023 on 8158 Progress: 4024 on 8158 Progress: 4025 on 8158 Progress: 4026 on 8158 Progress: 4027 on 8158 Progress: 4028 on 8158 Progress: 4029 on 8158 Progress: 4030 on 8158 Progress: 4031 on 8158 Progress: 4032 on 8158 Progress: 4033 on 8158 Progress: 4034 on 8158 Progress: 4035 on 8158 Progress: 4036 on 8158 Progress: 4037 on 8158 Progress: 4038 on 8158 Progress: 4039 on 8158 Progress: 4040 on 8158 Progress: 4041 on 8158 Progress: 4042 on 8158 Progress: 4043 on 8158 Progress: 4044 on 8158 Progress: 4045 on 8158 Progress: 4046 on 8158 Progress: 4047 on 8158 Progress: 4048 on 8158 Progress: 4049 on 8158 Progress: 4050 on 8158 Progress: 4051 on 8158 Progress: 4052 on 8158 Progress: 4053 on 8158 Progress: 4054 on 8158 Progress: 4055 on 8158 Progress: 4056 on 8158 Progress: 4057 on 8158 Progress: 4058 on 8158 Progress: 4059 on 8158 Progress: 4060 on 8158 Progress: 4061 on 8158 Progress: 4062 on 8158 Progress: 4063 on 8158 Progress: 4064 on 8158 Progress: 4065 on 8158 Progress: 4066 on 8158 Progress: 4067 on 8158 Progress: 4068 on 8158 Progress: 4069 on 8158 Progress: 4070 on 8158 Progress: 4071 on 8158 Progress: 4072 on 8158 Progress: 4073 on 8158 Progress: 4074 on 8158 Progress: 4075 on 8158 Progress: 4076 on 8158 Progress: 4077 on 8158 Progress: 4078 on 8158 Progress: 4079 on 8158 Progress: 4080 on 8158 Progress: 4081 on 8158 Progress: 4082 on 8158 Progress: 4083 on 8158 Progress: 4084 on 8158 Progress: 4085 on 8158 Progress: 4086 on 8158 Progress: 4087 on 8158 Progress: 4088 on 8158 Progress: 4089 on 8158 Progress: 4090 on 8158 Progress: 4091 on 8158 Progress: 4092 on 8158 Progress: 4093 on 8158 Progress: 4094 on 8158 Progress: 4095 on 8158 Progress: 4096 on 8158 Progress: 4097 on 8158 Progress: 4098 on 8158 Progress: 4099 on 8158 Progress: 4100 on 8158 Progress: 4101 on 8158 Progress: 4102 on 8158 Progress: 4103 on 8158 Progress: 4104 on 8158 Progress: 4105 on 8158 Progress: 4106 on 8158 Progress: 4107 on 8158 Progress: 4108 on 8158 Progress: 4109 on 8158 Progress: 4110 on 8158 Progress: 4111 on 8158 Progress: 4112 on 8158 Progress: 4113 on 8158 Progress: 4114 on 8158 Progress: 4115 on 8158 Progress: 4116 on 8158 Progress: 4117 on 8158 Progress: 4118 on 8158 Progress: 4119 on 8158 Progress: 4120 on 8158 Progress: 4121 on 8158 Progress: 4122 on 8158 Progress: 4123 on 8158 Progress: 4124 on 8158 Progress: 4125 on 8158 Progress: 4126 on 8158 Progress: 4127 on 8158 Progress: 4128 on 8158 Progress: 4129 on 8158 Progress: 4130 on 8158 Progress: 4131 on 8158 Progress: 4132 on 8158 Progress: 4133 on 8158 Progress: 4134 on 8158 Progress: 4135 on 8158 Progress: 4136 on 8158 Progress: 4137 on 8158 Progress: 4138 on 8158 Progress: 4139 on 8158 Progress: 4140 on 8158 Progress: 4141 on 8158 Progress: 4142 on 8158 Progress: 4143 on 8158 Progress: 4144 on 8158 Progress: 4145 on 8158 Progress: 4146 on 8158 Progress: 4147 on 8158 Progress: 4148 on 8158 Progress: 4149 on 8158 Progress: 4150 on 8158 Progress: 4151 on 8158 Progress: 4152 on 8158 Progress: 4153 on 8158 Progress: 4154 on 8158 Progress: 4155 on 8158 Progress: 4156 on 8158 Progress: 4157 on 8158 Progress: 4158 on 8158 Progress: 4159 on 8158 Progress: 4160 on 8158 Progress: 4161 on 8158 Progress: 4162 on 8158 Progress: 4163 on 8158 Progress: 4164 on 8158 Progress: 4165 on 8158 Progress: 4166 on 8158 Progress: 4167 on 8158 Progress: 4168 on 8158 Progress: 4169 on 8158 Progress: 4170 on 8158 Progress: 4171 on 8158 Progress: 4172 on 8158 Progress: 4173 on 8158 Progress: 4174 on 8158 Progress: 4175 on 8158 Progress: 4176 on 8158 Progress: 4177 on 8158 Progress: 4178 on 8158 Progress: 4179 on 8158 Progress: 4180 on 8158 Progress: 4181 on 8158 Progress: 4182 on 8158 Progress: 4183 on 8158 Progress: 4184 on 8158 Progress: 4185 on 8158 Progress: 4186 on 8158 Progress: 4187 on 8158 Progress: 4188 on 8158 Progress: 4189 on 8158 Progress: 4190 on 8158 Progress: 4191 on 8158 Progress: 4192 on 8158 Progress: 4193 on 8158 Progress: 4194 on 8158 Progress: 4195 on 8158 Progress: 4196 on 8158 Progress: 4197 on 8158 Progress: 4198 on 8158 Progress: 4199 on 8158 Progress: 4200 on 8158 Progress: 4201 on 8158 Progress: 4202 on 8158 Progress: 4203 on 8158 Progress: 4204 on 8158 Progress: 4205 on 8158 Progress: 4206 on 8158 Progress: 4207 on 8158 Progress: 4208 on 8158 Progress: 4209 on 8158 Progress: 4210 on 8158 Progress: 4211 on 8158 Progress: 4212 on 8158 Progress: 4213 on 8158 Progress: 4214 on 8158 Progress: 4215 on 8158 Progress: 4216 on 8158 Progress: 4217 on 8158 Progress: 4218 on 8158 Progress: 4219 on 8158 Progress: 4220 on 8158 Progress: 4221 on 8158 Progress: 4222 on 8158 Progress: 4223 on 8158 Progress: 4224 on 8158 Progress: 4225 on 8158 Progress: 4226 on 8158 Progress: 4227 on 8158 Progress: 4228 on 8158 Progress: 4229 on 8158 Progress: 4230 on 8158 Progress: 4231 on 8158 Progress: 4232 on 8158 Progress: 4233 on 8158 Progress: 4234 on 8158 Progress: 4235 on 8158 Progress: 4236 on 8158 Progress: 4237 on 8158 Progress: 4238 on 8158 Progress: 4239 on 8158 Progress: 4240 on 8158 Progress: 4241 on 8158 Progress: 4242 on 8158 Progress: 4243 on 8158 Progress: 4244 on 8158 Progress: 4245 on 8158 Progress: 4246 on 8158 Progress: 4247 on 8158 Progress: 4248 on 8158 Progress: 4249 on 8158 Progress: 4250 on 8158 Progress: 4251 on 8158 Progress: 4252 on 8158 Progress: 4253 on 8158 Progress: 4254 on 8158 Progress: 4255 on 8158 Progress: 4256 on 8158 Progress: 4257 on 8158 Progress: 4258 on 8158 Progress: 4259 on 8158 Progress: 4260 on 8158 Progress: 4261 on 8158 Progress: 4262 on 8158 Progress: 4263 on 8158 Progress: 4264 on 8158 Progress: 4265 on 8158 Progress: 4266 on 8158 Progress: 4267 on 8158 Progress: 4268 on 8158 Progress: 4269 on 8158 Progress: 4270 on 8158 Progress: 4271 on 8158 Progress: 4272 on 8158 Progress: 4273 on 8158 Progress: 4274 on 8158 Progress: 4275 on 8158 Progress: 4276 on 8158 Progress: 4277 on 8158 Progress: 4278 on 8158 Progress: 4279 on 8158 Progress: 4280 on 8158 Progress: 4281 on 8158 Progress: 4282 on 8158 Progress: 4283 on 8158 Progress: 4284 on 8158 Progress: 4285 on 8158 Progress: 4286 on 8158 Progress: 4287 on 8158 Progress: 4288 on 8158 Progress: 4289 on 8158 Progress: 4290 on 8158 Progress: 4291 on 8158 Progress: 4292 on 8158 Progress: 4293 on 8158 Progress: 4294 on 8158 Progress: 4295 on 8158 Progress: 4296 on 8158 Progress: 4297 on 8158 Progress: 4298 on 8158 Progress: 4299 on 8158 Progress: 4300 on 8158 Progress: 4301 on 8158 Progress: 4302 on 8158 Progress: 4303 on 8158 Progress: 4304 on 8158 Progress: 4305 on 8158 Progress: 4306 on 8158 Progress: 4307 on 8158 Progress: 4308 on 8158 Progress: 4309 on 8158 Progress: 4310 on 8158 Progress: 4311 on 8158 Progress: 4312 on 8158 Progress: 4313 on 8158 Progress: 4314 on 8158 Progress: 4315 on 8158 Progress: 4316 on 8158 Progress: 4317 on 8158 Progress: 4318 on 8158 Progress: 4319 on 8158 Progress: 4320 on 8158 Progress: 4321 on 8158 Progress: 4322 on 8158 Progress: 4323 on 8158 Progress: 4324 on 8158 Progress: 4325 on 8158 Progress: 4326 on 8158 Progress: 4327 on 8158 Progress: 4328 on 8158 Progress: 4329 on 8158 Progress: 4330 on 8158 Progress: 4331 on 8158 Progress: 4332 on 8158 Progress: 4333 on 8158 Progress: 4334 on 8158 Progress: 4335 on 8158 Progress: 4336 on 8158 Progress: 4337 on 8158 Progress: 4338 on 8158 Progress: 4339 on 8158 Progress: 4340 on 8158 Progress: 4341 on 8158 Progress: 4342 on 8158 Progress: 4343 on 8158 Progress: 4344 on 8158 Progress: 4345 on 8158 Progress: 4346 on 8158 Progress: 4347 on 8158 Progress: 4348 on 8158 Progress: 4349 on 8158 Progress: 4350 on 8158 Progress: 4351 on 8158 Progress: 4352 on 8158 Progress: 4353 on 8158 Progress: 4354 on 8158 Progress: 4355 on 8158 Progress: 4356 on 8158 Progress: 4357 on 8158 Progress: 4358 on 8158 Progress: 4359 on 8158 Progress: 4360 on 8158 Progress: 4361 on 8158 Progress: 4362 on 8158 Progress: 4363 on 8158 Progress: 4364 on 8158 Progress: 4365 on 8158 Progress: 4366 on 8158 Progress: 4367 on 8158 Progress: 4368 on 8158 Progress: 4369 on 8158 Progress: 4370 on 8158 Progress: 4371 on 8158 Progress: 4372 on 8158 Progress: 4373 on 8158 Progress: 4374 on 8158 Progress: 4375 on 8158 Progress: 4376 on 8158 Progress: 4377 on 8158 Progress: 4378 on 8158 Progress: 4379 on 8158 Progress: 4380 on 8158 Progress: 4381 on 8158 Progress: 4382 on 8158 Progress: 4383 on 8158 Progress: 4384 on 8158 Progress: 4385 on 8158 Progress: 4386 on 8158 Progress: 4387 on 8158 Progress: 4388 on 8158 Progress: 4389 on 8158 Progress: 4390 on 8158 Progress: 4391 on 8158 Progress: 4392 on 8158 Progress: 4393 on 8158 Progress: 4394 on 8158 Progress: 4395 on 8158 Progress: 4396 on 8158 Progress: 4397 on 8158 Progress: 4398 on 8158 Progress: 4399 on 8158 Progress: 4400 on 8158 Progress: 4401 on 8158 Progress: 4402 on 8158 Progress: 4403 on 8158 Progress: 4404 on 8158 Progress: 4405 on 8158 Progress: 4406 on 8158 Progress: 4407 on 8158 Progress: 4408 on 8158 Progress: 4409 on 8158 Progress: 4410 on 8158 Progress: 4411 on 8158 Progress: 4412 on 8158 Progress: 4413 on 8158 Progress: 4414 on 8158 Progress: 4415 on 8158 Progress: 4416 on 8158 Progress: 4417 on 8158 Progress: 4418 on 8158 Progress: 4419 on 8158 Progress: 4420 on 8158 Progress: 4421 on 8158 Progress: 4422 on 8158 Progress: 4423 on 8158 Progress: 4424 on 8158 Progress: 4425 on 8158 Progress: 4426 on 8158 Progress: 4427 on 8158 Progress: 4428 on 8158 Progress: 4429 on 8158 Progress: 4430 on 8158 Progress: 4431 on 8158 Progress: 4432 on 8158 Progress: 4433 on 8158 Progress: 4434 on 8158 Progress: 4435 on 8158 Progress: 4436 on 8158 Progress: 4437 on 8158 Progress: 4438 on 8158 Progress: 4439 on 8158 Progress: 4440 on 8158 Progress: 4441 on 8158 Progress: 4442 on 8158 Progress: 4443 on 8158 Progress: 4444 on 8158 Progress: 4445 on 8158 Progress: 4446 on 8158 Progress: 4447 on 8158 Progress: 4448 on 8158 Progress: 4449 on 8158 Progress: 4450 on 8158 Progress: 4451 on 8158 Progress: 4452 on 8158 Progress: 4453 on 8158 Progress: 4454 on 8158 Progress: 4455 on 8158 Progress: 4456 on 8158 Progress: 4457 on 8158 Progress: 4458 on 8158 Progress: 4459 on 8158 Progress: 4460 on 8158 Progress: 4461 on 8158 Progress: 4462 on 8158 Progress: 4463 on 8158 Progress: 4464 on 8158 Progress: 4465 on 8158 Progress: 4466 on 8158 Progress: 4467 on 8158 Progress: 4468 on 8158 Progress: 4469 on 8158 Progress: 4470 on 8158 Progress: 4471 on 8158 Progress: 4472 on 8158 Progress: 4473 on 8158 Progress: 4474 on 8158 Progress: 4475 on 8158 Progress: 4476 on 8158 Progress: 4477 on 8158 Progress: 4478 on 8158 Progress: 4479 on 8158 Progress: 4480 on 8158 Progress: 4481 on 8158 Progress: 4482 on 8158 Progress: 4483 on 8158 Progress: 4484 on 8158 Progress: 4485 on 8158 Progress: 4486 on 8158 Progress: 4487 on 8158 Progress: 4488 on 8158 Progress: 4489 on 8158 Progress: 4490 on 8158 Progress: 4491 on 8158 Progress: 4492 on 8158 Progress: 4493 on 8158 Progress: 4494 on 8158 Progress: 4495 on 8158 Progress: 4496 on 8158 Progress: 4497 on 8158 Progress: 4498 on 8158 Progress: 4499 on 8158 Progress: 4500 on 8158 Progress: 4501 on 8158 Progress: 4502 on 8158 Progress: 4503 on 8158 Progress: 4504 on 8158 Progress: 4505 on 8158 Progress: 4506 on 8158 Progress: 4507 on 8158 Progress: 4508 on 8158 Progress: 4509 on 8158 Progress: 4510 on 8158 Progress: 4511 on 8158 Progress: 4512 on 8158 Progress: 4513 on 8158 Progress: 4514 on 8158 Progress: 4515 on 8158 Progress: 4516 on 8158 Progress: 4517 on 8158 Progress: 4518 on 8158 Progress: 4519 on 8158 Progress: 4520 on 8158 Progress: 4521 on 8158 Progress: 4522 on 8158 Progress: 4523 on 8158 Progress: 4524 on 8158 Progress: 4525 on 8158 Progress: 4526 on 8158 Progress: 4527 on 8158 Progress: 4528 on 8158 Progress: 4529 on 8158 Progress: 4530 on 8158 Progress: 4531 on 8158 Progress: 4532 on 8158 Progress: 4533 on 8158 Progress: 4534 on 8158 Progress: 4535 on 8158 Progress: 4536 on 8158 Progress: 4537 on 8158 Progress: 4538 on 8158 Progress: 4539 on 8158 Progress: 4540 on 8158 Progress: 4541 on 8158 Progress: 4542 on 8158 Progress: 4543 on 8158 Progress: 4544 on 8158 Progress: 4545 on 8158 Progress: 4546 on 8158 Progress: 4547 on 8158 Progress: 4548 on 8158 Progress: 4549 on 8158 Progress: 4550 on 8158 Progress: 4551 on 8158 Progress: 4552 on 8158 Progress: 4553 on 8158 Progress: 4554 on 8158 Progress: 4555 on 8158 Progress: 4556 on 8158 Progress: 4557 on 8158 Progress: 4558 on 8158 Progress: 4559 on 8158 Progress: 4560 on 8158 Progress: 4561 on 8158 Progress: 4562 on 8158 Progress: 4563 on 8158 Progress: 4564 on 8158 Progress: 4565 on 8158 Progress: 4566 on 8158 Progress: 4567 on 8158 Progress: 4568 on 8158 Progress: 4569 on 8158 Progress: 4570 on 8158 Progress: 4571 on 8158 Progress: 4572 on 8158 Progress: 4573 on 8158 Progress: 4574 on 8158 Progress: 4575 on 8158 Progress: 4576 on 8158 Progress: 4577 on 8158 Progress: 4578 on 8158 Progress: 4579 on 8158 Progress: 4580 on 8158 Progress: 4581 on 8158 Progress: 4582 on 8158 Progress: 4583 on 8158 Progress: 4584 on 8158 Progress: 4585 on 8158 Progress: 4586 on 8158 Progress: 4587 on 8158 Progress: 4588 on 8158 Progress: 4589 on 8158 Progress: 4590 on 8158 Progress: 4591 on 8158 Progress: 4592 on 8158 Progress: 4593 on 8158 Progress: 4594 on 8158 Progress: 4595 on 8158 Progress: 4596 on 8158 Progress: 4597 on 8158 Progress: 4598 on 8158 Progress: 4599 on 8158 Progress: 4600 on 8158 Progress: 4601 on 8158 Progress: 4602 on 8158 Progress: 4603 on 8158 Progress: 4604 on 8158 Progress: 4605 on 8158 Progress: 4606 on 8158 Progress: 4607 on 8158 Progress: 4608 on 8158 Progress: 4609 on 8158 Progress: 4610 on 8158 Progress: 4611 on 8158 Progress: 4612 on 8158 Progress: 4613 on 8158 Progress: 4614 on 8158 Progress: 4615 on 8158 Progress: 4616 on 8158 Progress: 4617 on 8158 Progress: 4618 on 8158 Progress: 4619 on 8158 Progress: 4620 on 8158 Progress: 4621 on 8158 Progress: 4622 on 8158 Progress: 4623 on 8158 Progress: 4624 on 8158 Progress: 4625 on 8158 Progress: 4626 on 8158 Progress: 4627 on 8158 Progress: 4628 on 8158 Progress: 4629 on 8158 Progress: 4630 on 8158 Progress: 4631 on 8158 Progress: 4632 on 8158 Progress: 4633 on 8158 Progress: 4634 on 8158 Progress: 4635 on 8158 Progress: 4636 on 8158 Progress: 4637 on 8158 Progress: 4638 on 8158 Progress: 4639 on 8158 Progress: 4640 on 8158 Progress: 4641 on 8158 Progress: 4642 on 8158 Progress: 4643 on 8158 Progress: 4644 on 8158 Progress: 4645 on 8158 Progress: 4646 on 8158 Progress: 4647 on 8158 Progress: 4648 on 8158 Progress: 4649 on 8158 Progress: 4650 on 8158 Progress: 4651 on 8158 Progress: 4652 on 8158 Progress: 4653 on 8158 Progress: 4654 on 8158 Progress: 4655 on 8158 Progress: 4656 on 8158 Progress: 4657 on 8158 Progress: 4658 on 8158 Progress: 4659 on 8158 Progress: 4660 on 8158 Progress: 4661 on 8158 Progress: 4662 on 8158 Progress: 4663 on 8158 Progress: 4664 on 8158 Progress: 4665 on 8158 Progress: 4666 on 8158 Progress: 4667 on 8158 Progress: 4668 on 8158 Progress: 4669 on 8158 Progress: 4670 on 8158 Progress: 4671 on 8158 Progress: 4672 on 8158 Progress: 4673 on 8158 Progress: 4674 on 8158 Progress: 4675 on 8158 Progress: 4676 on 8158 Progress: 4677 on 8158 Progress: 4678 on 8158 Progress: 4679 on 8158 Progress: 4680 on 8158 Progress: 4681 on 8158 Progress: 4682 on 8158 Progress: 4683 on 8158 Progress: 4684 on 8158 Progress: 4685 on 8158 Progress: 4686 on 8158 Progress: 4687 on 8158 Progress: 4688 on 8158 Progress: 4689 on 8158 Progress: 4690 on 8158 Progress: 4691 on 8158 Progress: 4692 on 8158 Progress: 4693 on 8158 Progress: 4694 on 8158 Progress: 4695 on 8158 Progress: 4696 on 8158 Progress: 4697 on 8158 Progress: 4698 on 8158 Progress: 4699 on 8158 Progress: 4700 on 8158 Progress: 4701 on 8158 Progress: 4702 on 8158 Progress: 4703 on 8158 Progress: 4704 on 8158 Progress: 4705 on 8158 Progress: 4706 on 8158 Progress: 4707 on 8158 Progress: 4708 on 8158 Progress: 4709 on 8158 Progress: 4710 on 8158 Progress: 4711 on 8158 Progress: 4712 on 8158 Progress: 4713 on 8158 Progress: 4714 on 8158 Progress: 4715 on 8158 Progress: 4716 on 8158 Progress: 4717 on 8158 Progress: 4718 on 8158 Progress: 4719 on 8158 Progress: 4720 on 8158 Progress: 4721 on 8158 Progress: 4722 on 8158 Progress: 4723 on 8158 Progress: 4724 on 8158 Progress: 4725 on 8158 Progress: 4726 on 8158 Progress: 4727 on 8158 Progress: 4728 on 8158 Progress: 4729 on 8158 Progress: 4730 on 8158 Progress: 4731 on 8158 Progress: 4732 on 8158 Progress: 4733 on 8158 Progress: 4734 on 8158 Progress: 4735 on 8158 Progress: 4736 on 8158 Progress: 4737 on 8158 Progress: 4738 on 8158 Progress: 4739 on 8158 Progress: 4740 on 8158 Progress: 4741 on 8158 Progress: 4742 on 8158 Progress: 4743 on 8158 Progress: 4744 on 8158 Progress: 4745 on 8158 Progress: 4746 on 8158 Progress: 4747 on 8158 Progress: 4748 on 8158 Progress: 4749 on 8158 Progress: 4750 on 8158 Progress: 4751 on 8158 Progress: 4752 on 8158 Progress: 4753 on 8158 Progress: 4754 on 8158 Progress: 4755 on 8158 Progress: 4756 on 8158 Progress: 4757 on 8158 Progress: 4758 on 8158 Progress: 4759 on 8158 Progress: 4760 on 8158 Progress: 4761 on 8158 Progress: 4762 on 8158 Progress: 4763 on 8158 Progress: 4764 on 8158 Progress: 4765 on 8158 Progress: 4766 on 8158 Progress: 4767 on 8158 Progress: 4768 on 8158 Progress: 4769 on 8158 Progress: 4770 on 8158 Progress: 4771 on 8158 Progress: 4772 on 8158 Progress: 4773 on 8158 Progress: 4774 on 8158 Progress: 4775 on 8158 Progress: 4776 on 8158 Progress: 4777 on 8158 Progress: 4778 on 8158 Progress: 4779 on 8158 Progress: 4780 on 8158 Progress: 4781 on 8158 Progress: 4782 on 8158 Progress: 4783 on 8158 Progress: 4784 on 8158 Progress: 4785 on 8158 Progress: 4786 on 8158 Progress: 4787 on 8158 Progress: 4788 on 8158 Progress: 4789 on 8158 Progress: 4790 on 8158 Progress: 4791 on 8158 Progress: 4792 on 8158 Progress: 4793 on 8158 Progress: 4794 on 8158 Progress: 4795 on 8158 Progress: 4796 on 8158 Progress: 4797 on 8158 Progress: 4798 on 8158 Progress: 4799 on 8158 Progress: 4800 on 8158 Progress: 4801 on 8158 Progress: 4802 on 8158 Progress: 4803 on 8158 Progress: 4804 on 8158 Progress: 4805 on 8158 Progress: 4806 on 8158 Progress: 4807 on 8158 Progress: 4808 on 8158 Progress: 4809 on 8158 Progress: 4810 on 8158 Progress: 4811 on 8158 Progress: 4812 on 8158 Progress: 4813 on 8158 Progress: 4814 on 8158 Progress: 4815 on 8158 Progress: 4816 on 8158 Progress: 4817 on 8158 Progress: 4818 on 8158 Progress: 4819 on 8158 Progress: 4820 on 8158 Progress: 4821 on 8158 Progress: 4822 on 8158 Progress: 4823 on 8158 Progress: 4824 on 8158 Progress: 4825 on 8158 Progress: 4826 on 8158 Progress: 4827 on 8158 Progress: 4828 on 8158 Progress: 4829 on 8158 Progress: 4830 on 8158 Progress: 4831 on 8158 Progress: 4832 on 8158 Progress: 4833 on 8158 Progress: 4834 on 8158 Progress: 4835 on 8158 Progress: 4836 on 8158 Progress: 4837 on 8158 Progress: 4838 on 8158 Progress: 4839 on 8158 Progress: 4840 on 8158 Progress: 4841 on 8158 Progress: 4842 on 8158 Progress: 4843 on 8158 Progress: 4844 on 8158 Progress: 4845 on 8158 Progress: 4846 on 8158 Progress: 4847 on 8158 Progress: 4848 on 8158 Progress: 4849 on 8158 Progress: 4850 on 8158 Progress: 4851 on 8158 Progress: 4852 on 8158 Progress: 4853 on 8158 Progress: 4854 on 8158 Progress: 4855 on 8158 Progress: 4856 on 8158 Progress: 4857 on 8158 Progress: 4858 on 8158 Progress: 4859 on 8158 Progress: 4860 on 8158 Progress: 4861 on 8158 Progress: 4862 on 8158 Progress: 4863 on 8158 Progress: 4864 on 8158 Progress: 4865 on 8158 Progress: 4866 on 8158 Progress: 4867 on 8158 Progress: 4868 on 8158 Progress: 4869 on 8158 Progress: 4870 on 8158 Progress: 4871 on 8158 Progress: 4872 on 8158 Progress: 4873 on 8158 Progress: 4874 on 8158 Progress: 4875 on 8158 Progress: 4876 on 8158 Progress: 4877 on 8158 Progress: 4878 on 8158 Progress: 4879 on 8158 Progress: 4880 on 8158 Progress: 4881 on 8158 Progress: 4882 on 8158 Progress: 4883 on 8158 Progress: 4884 on 8158 Progress: 4885 on 8158 Progress: 4886 on 8158 Progress: 4887 on 8158 Progress: 4888 on 8158 Progress: 4889 on 8158 Progress: 4890 on 8158 Progress: 4891 on 8158 Progress: 4892 on 8158 Progress: 4893 on 8158 Progress: 4894 on 8158 Progress: 4895 on 8158 Progress: 4896 on 8158 Progress: 4897 on 8158 Progress: 4898 on 8158 Progress: 4899 on 8158 Progress: 4900 on 8158 Progress: 4901 on 8158 Progress: 4902 on 8158 Progress: 4903 on 8158 Progress: 4904 on 8158 Progress: 4905 on 8158 Progress: 4906 on 8158 Progress: 4907 on 8158 Progress: 4908 on 8158 Progress: 4909 on 8158 Progress: 4910 on 8158 Progress: 4911 on 8158 Progress: 4912 on 8158 Progress: 4913 on 8158 Progress: 4914 on 8158 Progress: 4915 on 8158 Progress: 4916 on 8158 Progress: 4917 on 8158 Progress: 4918 on 8158 Progress: 4919 on 8158 Progress: 4920 on 8158 Progress: 4921 on 8158 Progress: 4922 on 8158 Progress: 4923 on 8158 Progress: 4924 on 8158 Progress: 4925 on 8158 Progress: 4926 on 8158 Progress: 4927 on 8158 Progress: 4928 on 8158 Progress: 4929 on 8158 Progress: 4930 on 8158 Progress: 4931 on 8158 Progress: 4932 on 8158 Progress: 4933 on 8158 Progress: 4934 on 8158 Progress: 4935 on 8158 Progress: 4936 on 8158 Progress: 4937 on 8158 Progress: 4938 on 8158 Progress: 4939 on 8158 Progress: 4940 on 8158 Progress: 4941 on 8158 Progress: 4942 on 8158 Progress: 4943 on 8158 Progress: 4944 on 8158 Progress: 4945 on 8158 Progress: 4946 on 8158 Progress: 4947 on 8158 Progress: 4948 on 8158 Progress: 4949 on 8158 Progress: 4950 on 8158 Progress: 4951 on 8158 Progress: 4952 on 8158 Progress: 4953 on 8158 Progress: 4954 on 8158 Progress: 4955 on 8158 Progress: 4956 on 8158 Progress: 4957 on 8158 Progress: 4958 on 8158 Progress: 4959 on 8158 Progress: 4960 on 8158 Progress: 4961 on 8158 Progress: 4962 on 8158 Progress: 4963 on 8158 Progress: 4964 on 8158 Progress: 4965 on 8158 Progress: 4966 on 8158 Progress: 4967 on 8158 Progress: 4968 on 8158 Progress: 4969 on 8158 Progress: 4970 on 8158 Progress: 4971 on 8158 Progress: 4972 on 8158 Progress: 4973 on 8158 Progress: 4974 on 8158 Progress: 4975 on 8158 Progress: 4976 on 8158 Progress: 4977 on 8158 Progress: 4978 on 8158 Progress: 4979 on 8158 Progress: 4980 on 8158 Progress: 4981 on 8158 Progress: 4982 on 8158 Progress: 4983 on 8158 Progress: 4984 on 8158 Progress: 4985 on 8158 Progress: 4986 on 8158 Progress: 4987 on 8158 Progress: 4988 on 8158 Progress: 4989 on 8158 Progress: 4990 on 8158 Progress: 4991 on 8158 Progress: 4992 on 8158 Progress: 4993 on 8158 Progress: 4994 on 8158 Progress: 4995 on 8158 Progress: 4996 on 8158 Progress: 4997 on 8158 Progress: 4998 on 8158 Progress: 4999 on 8158 Progress: 5000 on 8158 Progress: 5001 on 8158 Progress: 5002 on 8158 Progress: 5003 on 8158 Progress: 5004 on 8158 Progress: 5005 on 8158 Progress: 5006 on 8158 Progress: 5007 on 8158 Progress: 5008 on 8158 Progress: 5009 on 8158 Progress: 5010 on 8158 Progress: 5011 on 8158 Progress: 5012 on 8158 Progress: 5013 on 8158 Progress: 5014 on 8158 Progress: 5015 on 8158 Progress: 5016 on 8158 Progress: 5017 on 8158 Progress: 5018 on 8158 Progress: 5019 on 8158 Progress: 5020 on 8158 Progress: 5021 on 8158 Progress: 5022 on 8158 Progress: 5023 on 8158 Progress: 5024 on 8158 Progress: 5025 on 8158 Progress: 5026 on 8158 Progress: 5027 on 8158 Progress: 5028 on 8158 Progress: 5029 on 8158 Progress: 5030 on 8158 Progress: 5031 on 8158 Progress: 5032 on 8158 Progress: 5033 on 8158 Progress: 5034 on 8158 Progress: 5035 on 8158 Progress: 5036 on 8158 Progress: 5037 on 8158 Progress: 5038 on 8158 Progress: 5039 on 8158 Progress: 5040 on 8158 Progress: 5041 on 8158 Progress: 5042 on 8158 Progress: 5043 on 8158 Progress: 5044 on 8158 Progress: 5045 on 8158 Progress: 5046 on 8158 Progress: 5047 on 8158 Progress: 5048 on 8158 Progress: 5049 on 8158 Progress: 5050 on 8158 Progress: 5051 on 8158 Progress: 5052 on 8158 Progress: 5053 on 8158 Progress: 5054 on 8158 Progress: 5055 on 8158 Progress: 5056 on 8158 Progress: 5057 on 8158 Progress: 5058 on 8158 Progress: 5059 on 8158 Progress: 5060 on 8158 Progress: 5061 on 8158 Progress: 5062 on 8158 Progress: 5063 on 8158 Progress: 5064 on 8158 Progress: 5065 on 8158 Progress: 5066 on 8158 Progress: 5067 on 8158 Progress: 5068 on 8158 Progress: 5069 on 8158 Progress: 5070 on 8158 Progress: 5071 on 8158 Progress: 5072 on 8158 Progress: 5073 on 8158 Progress: 5074 on 8158 Progress: 5075 on 8158 Progress: 5076 on 8158 Progress: 5077 on 8158 Progress: 5078 on 8158 Progress: 5079 on 8158 Progress: 5080 on 8158 Progress: 5081 on 8158 Progress: 5082 on 8158 Progress: 5083 on 8158 Progress: 5084 on 8158 Progress: 5085 on 8158 Progress: 5086 on 8158 Progress: 5087 on 8158 Progress: 5088 on 8158 Progress: 5089 on 8158 Progress: 5090 on 8158 Progress: 5091 on 8158 Progress: 5092 on 8158 Progress: 5093 on 8158 Progress: 5094 on 8158 Progress: 5095 on 8158 Progress: 5096 on 8158 Progress: 5097 on 8158 Progress: 5098 on 8158 Progress: 5099 on 8158 Progress: 5100 on 8158 Progress: 5101 on 8158 Progress: 5102 on 8158 Progress: 5103 on 8158 Progress: 5104 on 8158 Progress: 5105 on 8158 Progress: 5106 on 8158 Progress: 5107 on 8158 Progress: 5108 on 8158 Progress: 5109 on 8158 Progress: 5110 on 8158 Progress: 5111 on 8158 Progress: 5112 on 8158 Progress: 5113 on 8158 Progress: 5114 on 8158 Progress: 5115 on 8158 Progress: 5116 on 8158 Progress: 5117 on 8158 Progress: 5118 on 8158 Progress: 5119 on 8158 Progress: 5120 on 8158 Progress: 5121 on 8158 Progress: 5122 on 8158 Progress: 5123 on 8158 Progress: 5124 on 8158 Progress: 5125 on 8158 Progress: 5126 on 8158 Progress: 5127 on 8158 Progress: 5128 on 8158 Progress: 5129 on 8158 Progress: 5130 on 8158 Progress: 5131 on 8158 Progress: 5132 on 8158 Progress: 5133 on 8158 Progress: 5134 on 8158 Progress: 5135 on 8158 Progress: 5136 on 8158 Progress: 5137 on 8158 Progress: 5138 on 8158 Progress: 5139 on 8158 Progress: 5140 on 8158 Progress: 5141 on 8158 Progress: 5142 on 8158 Progress: 5143 on 8158 Progress: 5144 on 8158 Progress: 5145 on 8158 Progress: 5146 on 8158 Progress: 5147 on 8158 Progress: 5148 on 8158 Progress: 5149 on 8158 Progress: 5150 on 8158 Progress: 5151 on 8158 Progress: 5152 on 8158 Progress: 5153 on 8158 Progress: 5154 on 8158 Progress: 5155 on 8158 Progress: 5156 on 8158 Progress: 5157 on 8158 Progress: 5158 on 8158 Progress: 5159 on 8158 Progress: 5160 on 8158 Progress: 5161 on 8158 Progress: 5162 on 8158 Progress: 5163 on 8158 Progress: 5164 on 8158 Progress: 5165 on 8158 Progress: 5166 on 8158 Progress: 5167 on 8158 Progress: 5168 on 8158 Progress: 5169 on 8158 Progress: 5170 on 8158 Progress: 5171 on 8158 Progress: 5172 on 8158 Progress: 5173 on 8158 Progress: 5174 on 8158 Progress: 5175 on 8158 Progress: 5176 on 8158 Progress: 5177 on 8158 Progress: 5178 on 8158 Progress: 5179 on 8158 Progress: 5180 on 8158 Progress: 5181 on 8158 Progress: 5182 on 8158 Progress: 5183 on 8158 Progress: 5184 on 8158 Progress: 5185 on 8158 Progress: 5186 on 8158 Progress: 5187 on 8158 Progress: 5188 on 8158 Progress: 5189 on 8158 Progress: 5190 on 8158 Progress: 5191 on 8158 Progress: 5192 on 8158 Progress: 5193 on 8158 Progress: 5194 on 8158 Progress: 5195 on 8158 Progress: 5196 on 8158 Progress: 5197 on 8158 Progress: 5198 on 8158 Progress: 5199 on 8158 Progress: 5200 on 8158 Progress: 5201 on 8158 Progress: 5202 on 8158 Progress: 5203 on 8158 Progress: 5204 on 8158 Progress: 5205 on 8158 Progress: 5206 on 8158 Progress: 5207 on 8158 Progress: 5208 on 8158 Progress: 5209 on 8158 Progress: 5210 on 8158 Progress: 5211 on 8158 Progress: 5212 on 8158 Progress: 5213 on 8158 Progress: 5214 on 8158 Progress: 5215 on 8158 Progress: 5216 on 8158 Progress: 5217 on 8158 Progress: 5218 on 8158 Progress: 5219 on 8158 Progress: 5220 on 8158 Progress: 5221 on 8158 Progress: 5222 on 8158 Progress: 5223 on 8158 Progress: 5224 on 8158 Progress: 5225 on 8158 Progress: 5226 on 8158 Progress: 5227 on 8158 Progress: 5228 on 8158 Progress: 5229 on 8158 Progress: 5230 on 8158 Progress: 5231 on 8158 Progress: 5232 on 8158 Progress: 5233 on 8158 Progress: 5234 on 8158 Progress: 5235 on 8158 Progress: 5236 on 8158 Progress: 5237 on 8158 Progress: 5238 on 8158 Progress: 5239 on 8158 Progress: 5240 on 8158 Progress: 5241 on 8158 Progress: 5242 on 8158 Progress: 5243 on 8158 Progress: 5244 on 8158 Progress: 5245 on 8158 Progress: 5246 on 8158 Progress: 5247 on 8158 Progress: 5248 on 8158 Progress: 5249 on 8158 Progress: 5250 on 8158 Progress: 5251 on 8158 Progress: 5252 on 8158 Progress: 5253 on 8158 Progress: 5254 on 8158 Progress: 5255 on 8158 Progress: 5256 on 8158 Progress: 5257 on 8158 Progress: 5258 on 8158 Progress: 5259 on 8158 Progress: 5260 on 8158 Progress: 5261 on 8158 Progress: 5262 on 8158 Progress: 5263 on 8158 Progress: 5264 on 8158 Progress: 5265 on 8158 Progress: 5266 on 8158 Progress: 5267 on 8158 Progress: 5268 on 8158 Progress: 5269 on 8158 Progress: 5270 on 8158 Progress: 5271 on 8158 Progress: 5272 on 8158 Progress: 5273 on 8158 Progress: 5274 on 8158 Progress: 5275 on 8158 Progress: 5276 on 8158 Progress: 5277 on 8158 Progress: 5278 on 8158 Progress: 5279 on 8158 Progress: 5280 on 8158 Progress: 5281 on 8158 Progress: 5282 on 8158 Progress: 5283 on 8158 Progress: 5284 on 8158 Progress: 5285 on 8158 Progress: 5286 on 8158 Progress: 5287 on 8158 Progress: 5288 on 8158 Progress: 5289 on 8158 Progress: 5290 on 8158 Progress: 5291 on 8158 Progress: 5292 on 8158 Progress: 5293 on 8158 Progress: 5294 on 8158 Progress: 5295 on 8158 Progress: 5296 on 8158 Progress: 5297 on 8158 Progress: 5298 on 8158 Progress: 5299 on 8158 Progress: 5300 on 8158 Progress: 5301 on 8158 Progress: 5302 on 8158 Progress: 5303 on 8158 Progress: 5304 on 8158 Progress: 5305 on 8158 Progress: 5306 on 8158 Progress: 5307 on 8158 Progress: 5308 on 8158 Progress: 5309 on 8158 Progress: 5310 on 8158 Progress: 5311 on 8158 Progress: 5312 on 8158 Progress: 5313 on 8158 Progress: 5314 on 8158 Progress: 5315 on 8158 Progress: 5316 on 8158 Progress: 5317 on 8158 Progress: 5318 on 8158 Progress: 5319 on 8158 Progress: 5320 on 8158 Progress: 5321 on 8158 Progress: 5322 on 8158 Progress: 5323 on 8158 Progress: 5324 on 8158 Progress: 5325 on 8158 Progress: 5326 on 8158 Progress: 5327 on 8158 Progress: 5328 on 8158 Progress: 5329 on 8158 Progress: 5330 on 8158 Progress: 5331 on 8158 Progress: 5332 on 8158 Progress: 5333 on 8158 Progress: 5334 on 8158 Progress: 5335 on 8158 Progress: 5336 on 8158 Progress: 5337 on 8158 Progress: 5338 on 8158 Progress: 5339 on 8158 Progress: 5340 on 8158 Progress: 5341 on 8158 Progress: 5342 on 8158 Progress: 5343 on 8158 Progress: 5344 on 8158 Progress: 5345 on 8158 Progress: 5346 on 8158 Progress: 5347 on 8158 Progress: 5348 on 8158 Progress: 5349 on 8158 Progress: 5350 on 8158 Progress: 5351 on 8158 Progress: 5352 on 8158 Progress: 5353 on 8158 Progress: 5354 on 8158 Progress: 5355 on 8158 Progress: 5356 on 8158 Progress: 5357 on 8158 Progress: 5358 on 8158 Progress: 5359 on 8158 Progress: 5360 on 8158 Progress: 5361 on 8158 Progress: 5362 on 8158 Progress: 5363 on 8158 Progress: 5364 on 8158 Progress: 5365 on 8158 Progress: 5366 on 8158 Progress: 5367 on 8158 Progress: 5368 on 8158 Progress: 5369 on 8158 Progress: 5370 on 8158 Progress: 5371 on 8158 Progress: 5372 on 8158 Progress: 5373 on 8158 Progress: 5374 on 8158 Progress: 5375 on 8158 Progress: 5376 on 8158 Progress: 5377 on 8158 Progress: 5378 on 8158 Progress: 5379 on 8158 Progress: 5380 on 8158 Progress: 5381 on 8158 Progress: 5382 on 8158 Progress: 5383 on 8158 Progress: 5384 on 8158 Progress: 5385 on 8158 Progress: 5386 on 8158 Progress: 5387 on 8158 Progress: 5388 on 8158 Progress: 5389 on 8158 Progress: 5390 on 8158 Progress: 5391 on 8158 Progress: 5392 on 8158 Progress: 5393 on 8158 Progress: 5394 on 8158 Progress: 5395 on 8158 Progress: 5396 on 8158 Progress: 5397 on 8158 Progress: 5398 on 8158 Progress: 5399 on 8158 Progress: 5400 on 8158 Progress: 5401 on 8158 Progress: 5402 on 8158 Progress: 5403 on 8158 Progress: 5404 on 8158 Progress: 5405 on 8158 Progress: 5406 on 8158 Progress: 5407 on 8158 Progress: 5408 on 8158 Progress: 5409 on 8158 Progress: 5410 on 8158 Progress: 5411 on 8158 Progress: 5412 on 8158 Progress: 5413 on 8158 Progress: 5414 on 8158 Progress: 5415 on 8158 Progress: 5416 on 8158 Progress: 5417 on 8158 Progress: 5418 on 8158 Progress: 5419 on 8158 Progress: 5420 on 8158 Progress: 5421 on 8158 Progress: 5422 on 8158 Progress: 5423 on 8158 Progress: 5424 on 8158 Progress: 5425 on 8158 Progress: 5426 on 8158 Progress: 5427 on 8158 Progress: 5428 on 8158 Progress: 5429 on 8158 Progress: 5430 on 8158 Progress: 5431 on 8158 Progress: 5432 on 8158 Progress: 5433 on 8158 Progress: 5434 on 8158 Progress: 5435 on 8158 Progress: 5436 on 8158 Progress: 5437 on 8158 Progress: 5438 on 8158 Progress: 5439 on 8158 Progress: 5440 on 8158 Progress: 5441 on 8158 Progress: 5442 on 8158 Progress: 5443 on 8158 Progress: 5444 on 8158 Progress: 5445 on 8158 Progress: 5446 on 8158 Progress: 5447 on 8158 Progress: 5448 on 8158 Progress: 5449 on 8158 Progress: 5450 on 8158 Progress: 5451 on 8158 Progress: 5452 on 8158 Progress: 5453 on 8158 Progress: 5454 on 8158 Progress: 5455 on 8158 Progress: 5456 on 8158 Progress: 5457 on 8158 Progress: 5458 on 8158 Progress: 5459 on 8158 Progress: 5460 on 8158 Progress: 5461 on 8158 Progress: 5462 on 8158 Progress: 5463 on 8158 Progress: 5464 on 8158 Progress: 5465 on 8158 Progress: 5466 on 8158 Progress: 5467 on 8158 Progress: 5468 on 8158 Progress: 5469 on 8158 Progress: 5470 on 8158 Progress: 5471 on 8158 Progress: 5472 on 8158 Progress: 5473 on 8158 Progress: 5474 on 8158 Progress: 5475 on 8158 Progress: 5476 on 8158 Progress: 5477 on 8158 Progress: 5478 on 8158 Progress: 5479 on 8158 Progress: 5480 on 8158 Progress: 5481 on 8158 Progress: 5482 on 8158 Progress: 5483 on 8158 Progress: 5484 on 8158 Progress: 5485 on 8158 Progress: 5486 on 8158 Progress: 5487 on 8158 Progress: 5488 on 8158 Progress: 5489 on 8158 Progress: 5490 on 8158 Progress: 5491 on 8158 Progress: 5492 on 8158 Progress: 5493 on 8158 Progress: 5494 on 8158 Progress: 5495 on 8158 Progress: 5496 on 8158 Progress: 5497 on 8158 Progress: 5498 on 8158 Progress: 5499 on 8158 Progress: 5500 on 8158 Progress: 5501 on 8158 Progress: 5502 on 8158 Progress: 5503 on 8158 Progress: 5504 on 8158 Progress: 5505 on 8158 Progress: 5506 on 8158 Progress: 5507 on 8158 Progress: 5508 on 8158 Progress: 5509 on 8158 Progress: 5510 on 8158 Progress: 5511 on 8158 Progress: 5512 on 8158 Progress: 5513 on 8158 Progress: 5514 on 8158 Progress: 5515 on 8158 Progress: 5516 on 8158 Progress: 5517 on 8158 Progress: 5518 on 8158 Progress: 5519 on 8158 Progress: 5520 on 8158 Progress: 5521 on 8158 Progress: 5522 on 8158 Progress: 5523 on 8158 Progress: 5524 on 8158 Progress: 5525 on 8158 Progress: 5526 on 8158 Progress: 5527 on 8158 Progress: 5528 on 8158 Progress: 5529 on 8158 Progress: 5530 on 8158 Progress: 5531 on 8158 Progress: 5532 on 8158 Progress: 5533 on 8158 Progress: 5534 on 8158 Progress: 5535 on 8158 Progress: 5536 on 8158 Progress: 5537 on 8158 Progress: 5538 on 8158 Progress: 5539 on 8158 Progress: 5540 on 8158 Progress: 5541 on 8158 Progress: 5542 on 8158 Progress: 5543 on 8158 Progress: 5544 on 8158 Progress: 5545 on 8158 Progress: 5546 on 8158 Progress: 5547 on 8158 Progress: 5548 on 8158 Progress: 5549 on 8158 Progress: 5550 on 8158 Progress: 5551 on 8158 Progress: 5552 on 8158 Progress: 5553 on 8158 Progress: 5554 on 8158 Progress: 5555 on 8158 Progress: 5556 on 8158 Progress: 5557 on 8158 Progress: 5558 on 8158 Progress: 5559 on 8158 Progress: 5560 on 8158 Progress: 5561 on 8158 Progress: 5562 on 8158 Progress: 5563 on 8158 Progress: 5564 on 8158 Progress: 5565 on 8158 Progress: 5566 on 8158 Progress: 5567 on 8158 Progress: 5568 on 8158 Progress: 5569 on 8158 Progress: 5570 on 8158 Progress: 5571 on 8158 Progress: 5572 on 8158 Progress: 5573 on 8158 Progress: 5574 on 8158 Progress: 5575 on 8158 Progress: 5576 on 8158 Progress: 5577 on 8158 Progress: 5578 on 8158 Progress: 5579 on 8158 Progress: 5580 on 8158 Progress: 5581 on 8158 Progress: 5582 on 8158 Progress: 5583 on 8158 Progress: 5584 on 8158 Progress: 5585 on 8158 Progress: 5586 on 8158 Progress: 5587 on 8158 Progress: 5588 on 8158 Progress: 5589 on 8158 Progress: 5590 on 8158 Progress: 5591 on 8158 Progress: 5592 on 8158 Progress: 5593 on 8158 Progress: 5594 on 8158 Progress: 5595 on 8158 Progress: 5596 on 8158 Progress: 5597 on 8158 Progress: 5598 on 8158 Progress: 5599 on 8158 Progress: 5600 on 8158 Progress: 5601 on 8158 Progress: 5602 on 8158 Progress: 5603 on 8158 Progress: 5604 on 8158 Progress: 5605 on 8158 Progress: 5606 on 8158 Progress: 5607 on 8158 Progress: 5608 on 8158 Progress: 5609 on 8158 Progress: 5610 on 8158 Progress: 5611 on 8158 Progress: 5612 on 8158 Progress: 5613 on 8158 Progress: 5614 on 8158 Progress: 5615 on 8158 Progress: 5616 on 8158 Progress: 5617 on 8158 Progress: 5618 on 8158 Progress: 5619 on 8158 Progress: 5620 on 8158 Progress: 5621 on 8158 Progress: 5622 on 8158 Progress: 5623 on 8158 Progress: 5624 on 8158 Progress: 5625 on 8158 Progress: 5626 on 8158 Progress: 5627 on 8158 Progress: 5628 on 8158 Progress: 5629 on 8158 Progress: 5630 on 8158 Progress: 5631 on 8158 Progress: 5632 on 8158 Progress: 5633 on 8158 Progress: 5634 on 8158 Progress: 5635 on 8158 Progress: 5636 on 8158 Progress: 5637 on 8158 Progress: 5638 on 8158 Progress: 5639 on 8158 Progress: 5640 on 8158 Progress: 5641 on 8158 Progress: 5642 on 8158 Progress: 5643 on 8158 Progress: 5644 on 8158 Progress: 5645 on 8158 Progress: 5646 on 8158 Progress: 5647 on 8158 Progress: 5648 on 8158 Progress: 5649 on 8158 Progress: 5650 on 8158 Progress: 5651 on 8158 Progress: 5652 on 8158 Progress: 5653 on 8158 Progress: 5654 on 8158 Progress: 5655 on 8158 Progress: 5656 on 8158 Progress: 5657 on 8158 Progress: 5658 on 8158 Progress: 5659 on 8158 Progress: 5660 on 8158 Progress: 5661 on 8158 Progress: 5662 on 8158 Progress: 5663 on 8158 Progress: 5664 on 8158 Progress: 5665 on 8158 Progress: 5666 on 8158 Progress: 5667 on 8158 Progress: 5668 on 8158 Progress: 5669 on 8158 Progress: 5670 on 8158 Progress: 5671 on 8158 Progress: 5672 on 8158 Progress: 5673 on 8158 Progress: 5674 on 8158 Progress: 5675 on 8158 Progress: 5676 on 8158 Progress: 5677 on 8158 Progress: 5678 on 8158 Progress: 5679 on 8158 Progress: 5680 on 8158 Progress: 5681 on 8158 Progress: 5682 on 8158 Progress: 5683 on 8158 Progress: 5684 on 8158 Progress: 5685 on 8158 Progress: 5686 on 8158 Progress: 5687 on 8158 Progress: 5688 on 8158 Progress: 5689 on 8158 Progress: 5690 on 8158 Progress: 5691 on 8158 Progress: 5692 on 8158 Progress: 5693 on 8158 Progress: 5694 on 8158 Progress: 5695 on 8158 Progress: 5696 on 8158 Progress: 5697 on 8158 Progress: 5698 on 8158 Progress: 5699 on 8158 Progress: 5700 on 8158 Progress: 5701 on 8158 Progress: 5702 on 8158 Progress: 5703 on 8158 Progress: 5704 on 8158 Progress: 5705 on 8158 Progress: 5706 on 8158 Progress: 5707 on 8158 Progress: 5708 on 8158 Progress: 5709 on 8158 Progress: 5710 on 8158 Progress: 5711 on 8158 Progress: 5712 on 8158 Progress: 5713 on 8158 Progress: 5714 on 8158 Progress: 5715 on 8158 Progress: 5716 on 8158 Progress: 5717 on 8158 Progress: 5718 on 8158 Progress: 5719 on 8158 Progress: 5720 on 8158 Progress: 5721 on 8158 Progress: 5722 on 8158 Progress: 5723 on 8158 Progress: 5724 on 8158 Progress: 5725 on 8158 Progress: 5726 on 8158 Progress: 5727 on 8158 Progress: 5728 on 8158 Progress: 5729 on 8158 Progress: 5730 on 8158 Progress: 5731 on 8158 Progress: 5732 on 8158 Progress: 5733 on 8158 Progress: 5734 on 8158 Progress: 5735 on 8158 Progress: 5736 on 8158 Progress: 5737 on 8158 Progress: 5738 on 8158 Progress: 5739 on 8158 Progress: 5740 on 8158 Progress: 5741 on 8158 Progress: 5742 on 8158 Progress: 5743 on 8158 Progress: 5744 on 8158 Progress: 5745 on 8158 Progress: 5746 on 8158 Progress: 5747 on 8158 Progress: 5748 on 8158 Progress: 5749 on 8158 Progress: 5750 on 8158 Progress: 5751 on 8158 Progress: 5752 on 8158 Progress: 5753 on 8158 Progress: 5754 on 8158 Progress: 5755 on 8158 Progress: 5756 on 8158 Progress: 5757 on 8158 Progress: 5758 on 8158 Progress: 5759 on 8158 Progress: 5760 on 8158 Progress: 5761 on 8158 Progress: 5762 on 8158 Progress: 5763 on 8158 Progress: 5764 on 8158 Progress: 5765 on 8158 Progress: 5766 on 8158 Progress: 5767 on 8158 Progress: 5768 on 8158 Progress: 5769 on 8158 Progress: 5770 on 8158 Progress: 5771 on 8158 Progress: 5772 on 8158 Progress: 5773 on 8158 Progress: 5774 on 8158 Progress: 5775 on 8158 Progress: 5776 on 8158 Progress: 5777 on 8158 Progress: 5778 on 8158 Progress: 5779 on 8158 Progress: 5780 on 8158 Progress: 5781 on 8158 Progress: 5782 on 8158 Progress: 5783 on 8158 Progress: 5784 on 8158 Progress: 5785 on 8158 Progress: 5786 on 8158 Progress: 5787 on 8158 Progress: 5788 on 8158 Progress: 5789 on 8158 Progress: 5790 on 8158 Progress: 5791 on 8158 Progress: 5792 on 8158 Progress: 5793 on 8158 Progress: 5794 on 8158 Progress: 5795 on 8158 Progress: 5796 on 8158 Progress: 5797 on 8158 Progress: 5798 on 8158 Progress: 5799 on 8158 Progress: 5800 on 8158 Progress: 5801 on 8158 Progress: 5802 on 8158 Progress: 5803 on 8158 Progress: 5804 on 8158 Progress: 5805 on 8158 Progress: 5806 on 8158 Progress: 5807 on 8158 Progress: 5808 on 8158 Progress: 5809 on 8158 Progress: 5810 on 8158 Progress: 5811 on 8158 Progress: 5812 on 8158 Progress: 5813 on 8158 Progress: 5814 on 8158 Progress: 5815 on 8158 Progress: 5816 on 8158 Progress: 5817 on 8158 Progress: 5818 on 8158 Progress: 5819 on 8158 Progress: 5820 on 8158 Progress: 5821 on 8158 Progress: 5822 on 8158 Progress: 5823 on 8158 Progress: 5824 on 8158 Progress: 5825 on 8158 Progress: 5826 on 8158 Progress: 5827 on 8158 Progress: 5828 on 8158 Progress: 5829 on 8158 Progress: 5830 on 8158 Progress: 5831 on 8158 Progress: 5832 on 8158 Progress: 5833 on 8158 Progress: 5834 on 8158 Progress: 5835 on 8158 Progress: 5836 on 8158 Progress: 5837 on 8158 Progress: 5838 on 8158 Progress: 5839 on 8158 Progress: 5840 on 8158 Progress: 5841 on 8158 Progress: 5842 on 8158 Progress: 5843 on 8158 Progress: 5844 on 8158 Progress: 5845 on 8158 Progress: 5846 on 8158 Progress: 5847 on 8158 Progress: 5848 on 8158 Progress: 5849 on 8158 Progress: 5850 on 8158 Progress: 5851 on 8158 Progress: 5852 on 8158 Progress: 5853 on 8158 Progress: 5854 on 8158 Progress: 5855 on 8158 Progress: 5856 on 8158 Progress: 5857 on 8158 Progress: 5858 on 8158 Progress: 5859 on 8158 Progress: 5860 on 8158 Progress: 5861 on 8158 Progress: 5862 on 8158 Progress: 5863 on 8158 Progress: 5864 on 8158 Progress: 5865 on 8158 Progress: 5866 on 8158 Progress: 5867 on 8158 Progress: 5868 on 8158 Progress: 5869 on 8158 Progress: 5870 on 8158 Progress: 5871 on 8158 Progress: 5872 on 8158 Progress: 5873 on 8158 Progress: 5874 on 8158 Progress: 5875 on 8158 Progress: 5876 on 8158 Progress: 5877 on 8158 Progress: 5878 on 8158 Progress: 5879 on 8158 Progress: 5880 on 8158 Progress: 5881 on 8158 Progress: 5882 on 8158 Progress: 5883 on 8158 Progress: 5884 on 8158 Progress: 5885 on 8158 Progress: 5886 on 8158 Progress: 5887 on 8158 Progress: 5888 on 8158 Progress: 5889 on 8158 Progress: 5890 on 8158 Progress: 5891 on 8158 Progress: 5892 on 8158 Progress: 5893 on 8158 Progress: 5894 on 8158 Progress: 5895 on 8158 Progress: 5896 on 8158 Progress: 5897 on 8158 Progress: 5898 on 8158 Progress: 5899 on 8158 Progress: 5900 on 8158 Progress: 5901 on 8158 Progress: 5902 on 8158 Progress: 5903 on 8158 Progress: 5904 on 8158 Progress: 5905 on 8158 Progress: 5906 on 8158 Progress: 5907 on 8158 Progress: 5908 on 8158 Progress: 5909 on 8158 Progress: 5910 on 8158 Progress: 5911 on 8158 Progress: 5912 on 8158 Progress: 5913 on 8158 Progress: 5914 on 8158 Progress: 5915 on 8158 Progress: 5916 on 8158 Progress: 5917 on 8158 Progress: 5918 on 8158 Progress: 5919 on 8158 Progress: 5920 on 8158 Progress: 5921 on 8158 Progress: 5922 on 8158 Progress: 5923 on 8158 Progress: 5924 on 8158 Progress: 5925 on 8158 Progress: 5926 on 8158 Progress: 5927 on 8158 Progress: 5928 on 8158 Progress: 5929 on 8158 Progress: 5930 on 8158 Progress: 5931 on 8158 Progress: 5932 on 8158 Progress: 5933 on 8158 Progress: 5934 on 8158 Progress: 5935 on 8158 Progress: 5936 on 8158 Progress: 5937 on 8158 Progress: 5938 on 8158 Progress: 5939 on 8158 Progress: 5940 on 8158 Progress: 5941 on 8158 Progress: 5942 on 8158 Progress: 5943 on 8158 Progress: 5944 on 8158 Progress: 5945 on 8158 Progress: 5946 on 8158 Progress: 5947 on 8158 Progress: 5948 on 8158 Progress: 5949 on 8158 Progress: 5950 on 8158 Progress: 5951 on 8158 Progress: 5952 on 8158 Progress: 5953 on 8158 Progress: 5954 on 8158 Progress: 5955 on 8158 Progress: 5956 on 8158 Progress: 5957 on 8158 Progress: 5958 on 8158 Progress: 5959 on 8158 Progress: 5960 on 8158 Progress: 5961 on 8158 Progress: 5962 on 8158 Progress: 5963 on 8158 Progress: 5964 on 8158 Progress: 5965 on 8158 Progress: 5966 on 8158 Progress: 5967 on 8158 Progress: 5968 on 8158 Progress: 5969 on 8158 Progress: 5970 on 8158 Progress: 5971 on 8158 Progress: 5972 on 8158 Progress: 5973 on 8158 Progress: 5974 on 8158 Progress: 5975 on 8158 Progress: 5976 on 8158 Progress: 5977 on 8158 Progress: 5978 on 8158 Progress: 5979 on 8158 Progress: 5980 on 8158 Progress: 5981 on 8158 Progress: 5982 on 8158 Progress: 5983 on 8158 Progress: 5984 on 8158 Progress: 5985 on 8158 Progress: 5986 on 8158 Progress: 5987 on 8158 Progress: 5988 on 8158 Progress: 5989 on 8158 Progress: 5990 on 8158 Progress: 5991 on 8158 Progress: 5992 on 8158 Progress: 5993 on 8158 Progress: 5994 on 8158 Progress: 5995 on 8158 Progress: 5996 on 8158 Progress: 5997 on 8158 Progress: 5998 on 8158 Progress: 5999 on 8158 Progress: 6000 on 8158 Progress: 6001 on 8158 Progress: 6002 on 8158 Progress: 6003 on 8158 Progress: 6004 on 8158 Progress: 6005 on 8158 Progress: 6006 on 8158 Progress: 6007 on 8158 Progress: 6008 on 8158 Progress: 6009 on 8158 Progress: 6010 on 8158 Progress: 6011 on 8158 Progress: 6012 on 8158 Progress: 6013 on 8158 Progress: 6014 on 8158 Progress: 6015 on 8158 Progress: 6016 on 8158 Progress: 6017 on 8158 Progress: 6018 on 8158 Progress: 6019 on 8158 Progress: 6020 on 8158 Progress: 6021 on 8158 Progress: 6022 on 8158 Progress: 6023 on 8158 Progress: 6024 on 8158 Progress: 6025 on 8158 Progress: 6026 on 8158 Progress: 6027 on 8158 Progress: 6028 on 8158 Progress: 6029 on 8158 Progress: 6030 on 8158 Progress: 6031 on 8158 Progress: 6032 on 8158 Progress: 6033 on 8158 Progress: 6034 on 8158 Progress: 6035 on 8158 Progress: 6036 on 8158 Progress: 6037 on 8158 Progress: 6038 on 8158 Progress: 6039 on 8158 Progress: 6040 on 8158 Progress: 6041 on 8158 Progress: 6042 on 8158 Progress: 6043 on 8158 Progress: 6044 on 8158 Progress: 6045 on 8158 Progress: 6046 on 8158 Progress: 6047 on 8158 Progress: 6048 on 8158 Progress: 6049 on 8158 Progress: 6050 on 8158 Progress: 6051 on 8158 Progress: 6052 on 8158 Progress: 6053 on 8158 Progress: 6054 on 8158 Progress: 6055 on 8158 Progress: 6056 on 8158 Progress: 6057 on 8158 Progress: 6058 on 8158 Progress: 6059 on 8158 Progress: 6060 on 8158 Progress: 6061 on 8158 Progress: 6062 on 8158 Progress: 6063 on 8158 Progress: 6064 on 8158 Progress: 6065 on 8158 Progress: 6066 on 8158 Progress: 6067 on 8158 Progress: 6068 on 8158 Progress: 6069 on 8158 Progress: 6070 on 8158 Progress: 6071 on 8158 Progress: 6072 on 8158 Progress: 6073 on 8158 Progress: 6074 on 8158 Progress: 6075 on 8158 Progress: 6076 on 8158 Progress: 6077 on 8158 Progress: 6078 on 8158 Progress: 6079 on 8158 Progress: 6080 on 8158 Progress: 6081 on 8158 Progress: 6082 on 8158 Progress: 6083 on 8158 Progress: 6084 on 8158 Progress: 6085 on 8158 Progress: 6086 on 8158 Progress: 6087 on 8158 Progress: 6088 on 8158 Progress: 6089 on 8158 Progress: 6090 on 8158 Progress: 6091 on 8158 Progress: 6092 on 8158 Progress: 6093 on 8158 Progress: 6094 on 8158 Progress: 6095 on 8158 Progress: 6096 on 8158 Progress: 6097 on 8158 Progress: 6098 on 8158 Progress: 6099 on 8158 Progress: 6100 on 8158 Progress: 6101 on 8158 Progress: 6102 on 8158 Progress: 6103 on 8158 Progress: 6104 on 8158 Progress: 6105 on 8158 Progress: 6106 on 8158 Progress: 6107 on 8158 Progress: 6108 on 8158 Progress: 6109 on 8158 Progress: 6110 on 8158 Progress: 6111 on 8158 Progress: 6112 on 8158 Progress: 6113 on 8158 Progress: 6114 on 8158 Progress: 6115 on 8158 Progress: 6116 on 8158 Progress: 6117 on 8158 Progress: 6118 on 8158 Progress: 6119 on 8158 Progress: 6120 on 8158 Progress: 6121 on 8158 Progress: 6122 on 8158 Progress: 6123 on 8158 Progress: 6124 on 8158 Progress: 6125 on 8158 Progress: 6126 on 8158 Progress: 6127 on 8158 Progress: 6128 on 8158 Progress: 6129 on 8158 Progress: 6130 on 8158 Progress: 6131 on 8158 Progress: 6132 on 8158 Progress: 6133 on 8158 Progress: 6134 on 8158 Progress: 6135 on 8158 Progress: 6136 on 8158 Progress: 6137 on 8158 Progress: 6138 on 8158 Progress: 6139 on 8158 Progress: 6140 on 8158 Progress: 6141 on 8158 Progress: 6142 on 8158 Progress: 6143 on 8158 Progress: 6144 on 8158 Progress: 6145 on 8158 Progress: 6146 on 8158 Progress: 6147 on 8158 Progress: 6148 on 8158 Progress: 6149 on 8158 Progress: 6150 on 8158 Progress: 6151 on 8158 Progress: 6152 on 8158 Progress: 6153 on 8158 Progress: 6154 on 8158 Progress: 6155 on 8158 Progress: 6156 on 8158 Progress: 6157 on 8158 Progress: 6158 on 8158 Progress: 6159 on 8158 Progress: 6160 on 8158 Progress: 6161 on 8158 Progress: 6162 on 8158 Progress: 6163 on 8158 Progress: 6164 on 8158 Progress: 6165 on 8158 Progress: 6166 on 8158 Progress: 6167 on 8158 Progress: 6168 on 8158 Progress: 6169 on 8158 Progress: 6170 on 8158 Progress: 6171 on 8158 Progress: 6172 on 8158 Progress: 6173 on 8158 Progress: 6174 on 8158 Progress: 6175 on 8158 Progress: 6176 on 8158 Progress: 6177 on 8158 Progress: 6178 on 8158 Progress: 6179 on 8158 Progress: 6180 on 8158 Progress: 6181 on 8158 Progress: 6182 on 8158 Progress: 6183 on 8158 Progress: 6184 on 8158 Progress: 6185 on 8158 Progress: 6186 on 8158 Progress: 6187 on 8158 Progress: 6188 on 8158 Progress: 6189 on 8158 Progress: 6190 on 8158 Progress: 6191 on 8158 Progress: 6192 on 8158 Progress: 6193 on 8158 Progress: 6194 on 8158 Progress: 6195 on 8158 Progress: 6196 on 8158 Progress: 6197 on 8158 Progress: 6198 on 8158 Progress: 6199 on 8158 Progress: 6200 on 8158 Progress: 6201 on 8158 Progress: 6202 on 8158 Progress: 6203 on 8158 Progress: 6204 on 8158 Progress: 6205 on 8158 Progress: 6206 on 8158 Progress: 6207 on 8158 Progress: 6208 on 8158 Progress: 6209 on 8158 Progress: 6210 on 8158 Progress: 6211 on 8158 Progress: 6212 on 8158 Progress: 6213 on 8158 Progress: 6214 on 8158 Progress: 6215 on 8158 Progress: 6216 on 8158 Progress: 6217 on 8158 Progress: 6218 on 8158 Progress: 6219 on 8158 Progress: 6220 on 8158 Progress: 6221 on 8158 Progress: 6222 on 8158 Progress: 6223 on 8158 Progress: 6224 on 8158 Progress: 6225 on 8158 Progress: 6226 on 8158 Progress: 6227 on 8158 Progress: 6228 on 8158 Progress: 6229 on 8158 Progress: 6230 on 8158 Progress: 6231 on 8158 Progress: 6232 on 8158 Progress: 6233 on 8158 Progress: 6234 on 8158 Progress: 6235 on 8158 Progress: 6236 on 8158 Progress: 6237 on 8158 Progress: 6238 on 8158 Progress: 6239 on 8158 Progress: 6240 on 8158 Progress: 6241 on 8158 Progress: 6242 on 8158 Progress: 6243 on 8158 Progress: 6244 on 8158 Progress: 6245 on 8158 Progress: 6246 on 8158 Progress: 6247 on 8158 Progress: 6248 on 8158 Progress: 6249 on 8158 Progress: 6250 on 8158 Progress: 6251 on 8158 Progress: 6252 on 8158 Progress: 6253 on 8158 Progress: 6254 on 8158 Progress: 6255 on 8158 Progress: 6256 on 8158 Progress: 6257 on 8158 Progress: 6258 on 8158 Progress: 6259 on 8158 Progress: 6260 on 8158 Progress: 6261 on 8158 Progress: 6262 on 8158 Progress: 6263 on 8158 Progress: 6264 on 8158 Progress: 6265 on 8158 Progress: 6266 on 8158 Progress: 6267 on 8158 Progress: 6268 on 8158 Progress: 6269 on 8158 Progress: 6270 on 8158 Progress: 6271 on 8158 Progress: 6272 on 8158 Progress: 6273 on 8158 Progress: 6274 on 8158 Progress: 6275 on 8158 Progress: 6276 on 8158 Progress: 6277 on 8158 Progress: 6278 on 8158 Progress: 6279 on 8158 Progress: 6280 on 8158 Progress: 6281 on 8158 Progress: 6282 on 8158 Progress: 6283 on 8158 Progress: 6284 on 8158 Progress: 6285 on 8158 Progress: 6286 on 8158 Progress: 6287 on 8158 Progress: 6288 on 8158 Progress: 6289 on 8158 Progress: 6290 on 8158 Progress: 6291 on 8158 Progress: 6292 on 8158 Progress: 6293 on 8158 Progress: 6294 on 8158 Progress: 6295 on 8158 Progress: 6296 on 8158 Progress: 6297 on 8158 Progress: 6298 on 8158 Progress: 6299 on 8158 Progress: 6300 on 8158 Progress: 6301 on 8158 Progress: 6302 on 8158 Progress: 6303 on 8158 Progress: 6304 on 8158 Progress: 6305 on 8158 Progress: 6306 on 8158 Progress: 6307 on 8158 Progress: 6308 on 8158 Progress: 6309 on 8158 Progress: 6310 on 8158 Progress: 6311 on 8158 Progress: 6312 on 8158 Progress: 6313 on 8158 Progress: 6314 on 8158 Progress: 6315 on 8158 Progress: 6316 on 8158 Progress: 6317 on 8158 Progress: 6318 on 8158 Progress: 6319 on 8158 Progress: 6320 on 8158 Progress: 6321 on 8158 Progress: 6322 on 8158 Progress: 6323 on 8158 Progress: 6324 on 8158 Progress: 6325 on 8158 Progress: 6326 on 8158 Progress: 6327 on 8158 Progress: 6328 on 8158 Progress: 6329 on 8158 Progress: 6330 on 8158 Progress: 6331 on 8158 Progress: 6332 on 8158 Progress: 6333 on 8158 Progress: 6334 on 8158 Progress: 6335 on 8158 Progress: 6336 on 8158 Progress: 6337 on 8158 Progress: 6338 on 8158 Progress: 6339 on 8158 Progress: 6340 on 8158 Progress: 6341 on 8158 Progress: 6342 on 8158 Progress: 6343 on 8158 Progress: 6344 on 8158 Progress: 6345 on 8158 Progress: 6346 on 8158 Progress: 6347 on 8158 Progress: 6348 on 8158 Progress: 6349 on 8158 Progress: 6350 on 8158 Progress: 6351 on 8158 Progress: 6352 on 8158 Progress: 6353 on 8158 Progress: 6354 on 8158 Progress: 6355 on 8158 Progress: 6356 on 8158 Progress: 6357 on 8158 Progress: 6358 on 8158 Progress: 6359 on 8158 Progress: 6360 on 8158 Progress: 6361 on 8158 Progress: 6362 on 8158 Progress: 6363 on 8158 Progress: 6364 on 8158 Progress: 6365 on 8158 Progress: 6366 on 8158 Progress: 6367 on 8158 Progress: 6368 on 8158 Progress: 6369 on 8158 Progress: 6370 on 8158 Progress: 6371 on 8158 Progress: 6372 on 8158 Progress: 6373 on 8158 Progress: 6374 on 8158 Progress: 6375 on 8158 Progress: 6376 on 8158 Progress: 6377 on 8158 Progress: 6378 on 8158 Progress: 6379 on 8158 Progress: 6380 on 8158 Progress: 6381 on 8158 Progress: 6382 on 8158 Progress: 6383 on 8158 Progress: 6384 on 8158 Progress: 6385 on 8158 Progress: 6386 on 8158 Progress: 6387 on 8158 Progress: 6388 on 8158 Progress: 6389 on 8158 Progress: 6390 on 8158 Progress: 6391 on 8158 Progress: 6392 on 8158 Progress: 6393 on 8158 Progress: 6394 on 8158 Progress: 6395 on 8158 Progress: 6396 on 8158 Progress: 6397 on 8158 Progress: 6398 on 8158 Progress: 6399 on 8158 Progress: 6400 on 8158 Progress: 6401 on 8158 Progress: 6402 on 8158 Progress: 6403 on 8158 Progress: 6404 on 8158 Progress: 6405 on 8158 Progress: 6406 on 8158 Progress: 6407 on 8158 Progress: 6408 on 8158 Progress: 6409 on 8158 Progress: 6410 on 8158 Progress: 6411 on 8158 Progress: 6412 on 8158 Progress: 6413 on 8158 Progress: 6414 on 8158 Progress: 6415 on 8158 Progress: 6416 on 8158 Progress: 6417 on 8158 Progress: 6418 on 8158 Progress: 6419 on 8158 Progress: 6420 on 8158 Progress: 6421 on 8158 Progress: 6422 on 8158 Progress: 6423 on 8158 Progress: 6424 on 8158 Progress: 6425 on 8158 Progress: 6426 on 8158 Progress: 6427 on 8158 Progress: 6428 on 8158 Progress: 6429 on 8158 Progress: 6430 on 8158 Progress: 6431 on 8158 Progress: 6432 on 8158 Progress: 6433 on 8158 Progress: 6434 on 8158 Progress: 6435 on 8158 Progress: 6436 on 8158 Progress: 6437 on 8158 Progress: 6438 on 8158 Progress: 6439 on 8158 Progress: 6440 on 8158 Progress: 6441 on 8158 Progress: 6442 on 8158 Progress: 6443 on 8158 Progress: 6444 on 8158 Progress: 6445 on 8158 Progress: 6446 on 8158 Progress: 6447 on 8158 Progress: 6448 on 8158 Progress: 6449 on 8158 Progress: 6450 on 8158 Progress: 6451 on 8158 Progress: 6452 on 8158 Progress: 6453 on 8158 Progress: 6454 on 8158 Progress: 6455 on 8158 Progress: 6456 on 8158 Progress: 6457 on 8158 Progress: 6458 on 8158 Progress: 6459 on 8158 Progress: 6460 on 8158 Progress: 6461 on 8158 Progress: 6462 on 8158 Progress: 6463 on 8158 Progress: 6464 on 8158 Progress: 6465 on 8158 Progress: 6466 on 8158 Progress: 6467 on 8158 Progress: 6468 on 8158 Progress: 6469 on 8158 Progress: 6470 on 8158 Progress: 6471 on 8158 Progress: 6472 on 8158 Progress: 6473 on 8158 Progress: 6474 on 8158 Progress: 6475 on 8158 Progress: 6476 on 8158 Progress: 6477 on 8158 Progress: 6478 on 8158 Progress: 6479 on 8158 Progress: 6480 on 8158 Progress: 6481 on 8158 Progress: 6482 on 8158 Progress: 6483 on 8158 Progress: 6484 on 8158 Progress: 6485 on 8158 Progress: 6486 on 8158 Progress: 6487 on 8158 Progress: 6488 on 8158 Progress: 6489 on 8158 Progress: 6490 on 8158 Progress: 6491 on 8158 Progress: 6492 on 8158 Progress: 6493 on 8158 Progress: 6494 on 8158 Progress: 6495 on 8158 Progress: 6496 on 8158 Progress: 6497 on 8158 Progress: 6498 on 8158 Progress: 6499 on 8158 Progress: 6500 on 8158 Progress: 6501 on 8158 Progress: 6502 on 8158 Progress: 6503 on 8158 Progress: 6504 on 8158 Progress: 6505 on 8158 Progress: 6506 on 8158 Progress: 6507 on 8158 Progress: 6508 on 8158 Progress: 6509 on 8158 Progress: 6510 on 8158 Progress: 6511 on 8158 Progress: 6512 on 8158 Progress: 6513 on 8158 Progress: 6514 on 8158 Progress: 6515 on 8158 Progress: 6516 on 8158 Progress: 6517 on 8158 Progress: 6518 on 8158 Progress: 6519 on 8158 Progress: 6520 on 8158 Progress: 6521 on 8158 Progress: 6522 on 8158 Progress: 6523 on 8158 Progress: 6524 on 8158 Progress: 6525 on 8158 Progress: 6526 on 8158 Progress: 6527 on 8158 Progress: 6528 on 8158 Progress: 6529 on 8158 Progress: 6530 on 8158 Progress: 6531 on 8158 Progress: 6532 on 8158 Progress: 6533 on 8158 Progress: 6534 on 8158 Progress: 6535 on 8158 Progress: 6536 on 8158 Progress: 6537 on 8158 Progress: 6538 on 8158 Progress: 6539 on 8158 Progress: 6540 on 8158 Progress: 6541 on 8158 Progress: 6542 on 8158 Progress: 6543 on 8158 Progress: 6544 on 8158 Progress: 6545 on 8158 Progress: 6546 on 8158 Progress: 6547 on 8158 Progress: 6548 on 8158 Progress: 6549 on 8158 Progress: 6550 on 8158 Progress: 6551 on 8158 Progress: 6552 on 8158 Progress: 6553 on 8158 Progress: 6554 on 8158 Progress: 6555 on 8158 Progress: 6556 on 8158 Progress: 6557 on 8158 Progress: 6558 on 8158 Progress: 6559 on 8158 Progress: 6560 on 8158 Progress: 6561 on 8158 Progress: 6562 on 8158 Progress: 6563 on 8158 Progress: 6564 on 8158 Progress: 6565 on 8158 Progress: 6566 on 8158 Progress: 6567 on 8158 Progress: 6568 on 8158 Progress: 6569 on 8158 Progress: 6570 on 8158 Progress: 6571 on 8158 Progress: 6572 on 8158 Progress: 6573 on 8158 Progress: 6574 on 8158 Progress: 6575 on 8158 Progress: 6576 on 8158 Progress: 6577 on 8158 Progress: 6578 on 8158 Progress: 6579 on 8158 Progress: 6580 on 8158 Progress: 6581 on 8158 Progress: 6582 on 8158 Progress: 6583 on 8158 Progress: 6584 on 8158 Progress: 6585 on 8158 Progress: 6586 on 8158 Progress: 6587 on 8158 Progress: 6588 on 8158 Progress: 6589 on 8158 Progress: 6590 on 8158 Progress: 6591 on 8158 Progress: 6592 on 8158 Progress: 6593 on 8158 Progress: 6594 on 8158 Progress: 6595 on 8158 Progress: 6596 on 8158 Progress: 6597 on 8158 Progress: 6598 on 8158 Progress: 6599 on 8158 Progress: 6600 on 8158 Progress: 6601 on 8158 Progress: 6602 on 8158 Progress: 6603 on 8158 Progress: 6604 on 8158 Progress: 6605 on 8158 Progress: 6606 on 8158 Progress: 6607 on 8158 Progress: 6608 on 8158 Progress: 6609 on 8158 Progress: 6610 on 8158 Progress: 6611 on 8158 Progress: 6612 on 8158 Progress: 6613 on 8158 Progress: 6614 on 8158 Progress: 6615 on 8158 Progress: 6616 on 8158 Progress: 6617 on 8158 Progress: 6618 on 8158 Progress: 6619 on 8158 Progress: 6620 on 8158 Progress: 6621 on 8158 Progress: 6622 on 8158 Progress: 6623 on 8158 Progress: 6624 on 8158 Progress: 6625 on 8158 Progress: 6626 on 8158 Progress: 6627 on 8158 Progress: 6628 on 8158 Progress: 6629 on 8158 Progress: 6630 on 8158 Progress: 6631 on 8158 Progress: 6632 on 8158 Progress: 6633 on 8158 Progress: 6634 on 8158 Progress: 6635 on 8158 Progress: 6636 on 8158 Progress: 6637 on 8158 Progress: 6638 on 8158 Progress: 6639 on 8158 Progress: 6640 on 8158 Progress: 6641 on 8158 Progress: 6642 on 8158 Progress: 6643 on 8158 Progress: 6644 on 8158 Progress: 6645 on 8158 Progress: 6646 on 8158 Progress: 6647 on 8158 Progress: 6648 on 8158 Progress: 6649 on 8158 Progress: 6650 on 8158 Progress: 6651 on 8158 Progress: 6652 on 8158 Progress: 6653 on 8158 Progress: 6654 on 8158 Progress: 6655 on 8158 Progress: 6656 on 8158 Progress: 6657 on 8158 Progress: 6658 on 8158 Progress: 6659 on 8158 Progress: 6660 on 8158 Progress: 6661 on 8158 Progress: 6662 on 8158 Progress: 6663 on 8158 Progress: 6664 on 8158 Progress: 6665 on 8158 Progress: 6666 on 8158 Progress: 6667 on 8158 Progress: 6668 on 8158 Progress: 6669 on 8158 Progress: 6670 on 8158 Progress: 6671 on 8158 Progress: 6672 on 8158 Progress: 6673 on 8158 Progress: 6674 on 8158 Progress: 6675 on 8158 Progress: 6676 on 8158 Progress: 6677 on 8158 Progress: 6678 on 8158 Progress: 6679 on 8158 Progress: 6680 on 8158 Progress: 6681 on 8158 Progress: 6682 on 8158 Progress: 6683 on 8158 Progress: 6684 on 8158 Progress: 6685 on 8158 Progress: 6686 on 8158 Progress: 6687 on 8158 Progress: 6688 on 8158 Progress: 6689 on 8158 Progress: 6690 on 8158 Progress: 6691 on 8158 Progress: 6692 on 8158 Progress: 6693 on 8158 Progress: 6694 on 8158 Progress: 6695 on 8158 Progress: 6696 on 8158 Progress: 6697 on 8158 Progress: 6698 on 8158 Progress: 6699 on 8158 Progress: 6700 on 8158 Progress: 6701 on 8158 Progress: 6702 on 8158 Progress: 6703 on 8158 Progress: 6704 on 8158 Progress: 6705 on 8158 Progress: 6706 on 8158 Progress: 6707 on 8158 Progress: 6708 on 8158 Progress: 6709 on 8158 Progress: 6710 on 8158 Progress: 6711 on 8158 Progress: 6712 on 8158 Progress: 6713 on 8158 Progress: 6714 on 8158 Progress: 6715 on 8158 Progress: 6716 on 8158 Progress: 6717 on 8158 Progress: 6718 on 8158 Progress: 6719 on 8158 Progress: 6720 on 8158 Progress: 6721 on 8158 Progress: 6722 on 8158 Progress: 6723 on 8158 Progress: 6724 on 8158 Progress: 6725 on 8158 Progress: 6726 on 8158 Progress: 6727 on 8158 Progress: 6728 on 8158 Progress: 6729 on 8158 Progress: 6730 on 8158 Progress: 6731 on 8158 Progress: 6732 on 8158 Progress: 6733 on 8158 Progress: 6734 on 8158 Progress: 6735 on 8158 Progress: 6736 on 8158 Progress: 6737 on 8158 Progress: 6738 on 8158 Progress: 6739 on 8158 Progress: 6740 on 8158 Progress: 6741 on 8158 Progress: 6742 on 8158 Progress: 6743 on 8158 Progress: 6744 on 8158 Progress: 6745 on 8158 Progress: 6746 on 8158 Progress: 6747 on 8158 Progress: 6748 on 8158 Progress: 6749 on 8158 Progress: 6750 on 8158 Progress: 6751 on 8158 Progress: 6752 on 8158 Progress: 6753 on 8158 Progress: 6754 on 8158 Progress: 6755 on 8158 Progress: 6756 on 8158 Progress: 6757 on 8158 Progress: 6758 on 8158 Progress: 6759 on 8158 Progress: 6760 on 8158 Progress: 6761 on 8158 Progress: 6762 on 8158 Progress: 6763 on 8158 Progress: 6764 on 8158 Progress: 6765 on 8158 Progress: 6766 on 8158 Progress: 6767 on 8158 Progress: 6768 on 8158 Progress: 6769 on 8158 Progress: 6770 on 8158 Progress: 6771 on 8158 Progress: 6772 on 8158 Progress: 6773 on 8158 Progress: 6774 on 8158 Progress: 6775 on 8158 Progress: 6776 on 8158 Progress: 6777 on 8158 Progress: 6778 on 8158 Progress: 6779 on 8158 Progress: 6780 on 8158 Progress: 6781 on 8158 Progress: 6782 on 8158 Progress: 6783 on 8158 Progress: 6784 on 8158 Progress: 6785 on 8158 Progress: 6786 on 8158 Progress: 6787 on 8158 Progress: 6788 on 8158 Progress: 6789 on 8158 Progress: 6790 on 8158 Progress: 6791 on 8158 Progress: 6792 on 8158 Progress: 6793 on 8158 Progress: 6794 on 8158 Progress: 6795 on 8158 Progress: 6796 on 8158 Progress: 6797 on 8158 Progress: 6798 on 8158 Progress: 6799 on 8158 Progress: 6800 on 8158 Progress: 6801 on 8158 Progress: 6802 on 8158 Progress: 6803 on 8158 Progress: 6804 on 8158 Progress: 6805 on 8158 Progress: 6806 on 8158 Progress: 6807 on 8158 Progress: 6808 on 8158 Progress: 6809 on 8158 Progress: 6810 on 8158 Progress: 6811 on 8158 Progress: 6812 on 8158 Progress: 6813 on 8158 Progress: 6814 on 8158 Progress: 6815 on 8158 Progress: 6816 on 8158 Progress: 6817 on 8158 Progress: 6818 on 8158 Progress: 6819 on 8158 Progress: 6820 on 8158 Progress: 6821 on 8158 Progress: 6822 on 8158 Progress: 6823 on 8158 Progress: 6824 on 8158 Progress: 6825 on 8158 Progress: 6826 on 8158 Progress: 6827 on 8158 Progress: 6828 on 8158 Progress: 6829 on 8158 Progress: 6830 on 8158 Progress: 6831 on 8158 Progress: 6832 on 8158 Progress: 6833 on 8158 Progress: 6834 on 8158 Progress: 6835 on 8158 Progress: 6836 on 8158 Progress: 6837 on 8158 Progress: 6838 on 8158 Progress: 6839 on 8158 Progress: 6840 on 8158 Progress: 6841 on 8158 Progress: 6842 on 8158 Progress: 6843 on 8158 Progress: 6844 on 8158 Progress: 6845 on 8158 Progress: 6846 on 8158 Progress: 6847 on 8158 Progress: 6848 on 8158 Progress: 6849 on 8158 Progress: 6850 on 8158 Progress: 6851 on 8158 Progress: 6852 on 8158 Progress: 6853 on 8158 Progress: 6854 on 8158 Progress: 6855 on 8158 Progress: 6856 on 8158 Progress: 6857 on 8158 Progress: 6858 on 8158 Progress: 6859 on 8158 Progress: 6860 on 8158 Progress: 6861 on 8158 Progress: 6862 on 8158 Progress: 6863 on 8158 Progress: 6864 on 8158 Progress: 6865 on 8158 Progress: 6866 on 8158 Progress: 6867 on 8158 Progress: 6868 on 8158 Progress: 6869 on 8158 Progress: 6870 on 8158 Progress: 6871 on 8158 Progress: 6872 on 8158 Progress: 6873 on 8158 Progress: 6874 on 8158 Progress: 6875 on 8158 Progress: 6876 on 8158 Progress: 6877 on 8158 Progress: 6878 on 8158 Progress: 6879 on 8158 Progress: 6880 on 8158 Progress: 6881 on 8158 Progress: 6882 on 8158 Progress: 6883 on 8158 Progress: 6884 on 8158 Progress: 6885 on 8158 Progress: 6886 on 8158 Progress: 6887 on 8158 Progress: 6888 on 8158 Progress: 6889 on 8158 Progress: 6890 on 8158 Progress: 6891 on 8158 Progress: 6892 on 8158 Progress: 6893 on 8158 Progress: 6894 on 8158 Progress: 6895 on 8158 Progress: 6896 on 8158 Progress: 6897 on 8158 Progress: 6898 on 8158 Progress: 6899 on 8158 Progress: 6900 on 8158 Progress: 6901 on 8158 Progress: 6902 on 8158 Progress: 6903 on 8158 Progress: 6904 on 8158 Progress: 6905 on 8158 Progress: 6906 on 8158 Progress: 6907 on 8158 Progress: 6908 on 8158 Progress: 6909 on 8158 Progress: 6910 on 8158 Progress: 6911 on 8158 Progress: 6912 on 8158 Progress: 6913 on 8158 Progress: 6914 on 8158 Progress: 6915 on 8158 Progress: 6916 on 8158 Progress: 6917 on 8158 Progress: 6918 on 8158 Progress: 6919 on 8158 Progress: 6920 on 8158 Progress: 6921 on 8158 Progress: 6922 on 8158 Progress: 6923 on 8158 Progress: 6924 on 8158 Progress: 6925 on 8158 Progress: 6926 on 8158 Progress: 6927 on 8158 Progress: 6928 on 8158 Progress: 6929 on 8158 Progress: 6930 on 8158 Progress: 6931 on 8158 Progress: 6932 on 8158 Progress: 6933 on 8158 Progress: 6934 on 8158 Progress: 6935 on 8158 Progress: 6936 on 8158 Progress: 6937 on 8158 Progress: 6938 on 8158 Progress: 6939 on 8158 Progress: 6940 on 8158 Progress: 6941 on 8158 Progress: 6942 on 8158 Progress: 6943 on 8158 Progress: 6944 on 8158 Progress: 6945 on 8158 Progress: 6946 on 8158 Progress: 6947 on 8158 Progress: 6948 on 8158 Progress: 6949 on 8158 Progress: 6950 on 8158 Progress: 6951 on 8158 Progress: 6952 on 8158 Progress: 6953 on 8158 Progress: 6954 on 8158 Progress: 6955 on 8158 Progress: 6956 on 8158 Progress: 6957 on 8158 Progress: 6958 on 8158 Progress: 6959 on 8158 Progress: 6960 on 8158 Progress: 6961 on 8158 Progress: 6962 on 8158 Progress: 6963 on 8158 Progress: 6964 on 8158 Progress: 6965 on 8158 Progress: 6966 on 8158 Progress: 6967 on 8158 Progress: 6968 on 8158 Progress: 6969 on 8158 Progress: 6970 on 8158 Progress: 6971 on 8158 Progress: 6972 on 8158 Progress: 6973 on 8158 Progress: 6974 on 8158 Progress: 6975 on 8158 Progress: 6976 on 8158 Progress: 6977 on 8158 Progress: 6978 on 8158 Progress: 6979 on 8158 Progress: 6980 on 8158 Progress: 6981 on 8158 Progress: 6982 on 8158 Progress: 6983 on 8158 Progress: 6984 on 8158 Progress: 6985 on 8158 Progress: 6986 on 8158 Progress: 6987 on 8158 Progress: 6988 on 8158 Progress: 6989 on 8158 Progress: 6990 on 8158 Progress: 6991 on 8158 Progress: 6992 on 8158 Progress: 6993 on 8158 Progress: 6994 on 8158 Progress: 6995 on 8158 Progress: 6996 on 8158 Progress: 6997 on 8158 Progress: 6998 on 8158 Progress: 6999 on 8158 Progress: 7000 on 8158 Progress: 7001 on 8158 Progress: 7002 on 8158 Progress: 7003 on 8158 Progress: 7004 on 8158 Progress: 7005 on 8158 Progress: 7006 on 8158 Progress: 7007 on 8158 Progress: 7008 on 8158 Progress: 7009 on 8158 Progress: 7010 on 8158 Progress: 7011 on 8158 Progress: 7012 on 8158 Progress: 7013 on 8158 Progress: 7014 on 8158 Progress: 7015 on 8158 Progress: 7016 on 8158 Progress: 7017 on 8158 Progress: 7018 on 8158 Progress: 7019 on 8158 Progress: 7020 on 8158 Progress: 7021 on 8158 Progress: 7022 on 8158 Progress: 7023 on 8158 Progress: 7024 on 8158 Progress: 7025 on 8158 Progress: 7026 on 8158 Progress: 7027 on 8158 Progress: 7028 on 8158 Progress: 7029 on 8158 Progress: 7030 on 8158 Progress: 7031 on 8158 Progress: 7032 on 8158 Progress: 7033 on 8158 Progress: 7034 on 8158 Progress: 7035 on 8158 Progress: 7036 on 8158 Progress: 7037 on 8158 Progress: 7038 on 8158 Progress: 7039 on 8158 Progress: 7040 on 8158 Progress: 7041 on 8158 Progress: 7042 on 8158 Progress: 7043 on 8158 Progress: 7044 on 8158 Progress: 7045 on 8158 Progress: 7046 on 8158 Progress: 7047 on 8158 Progress: 7048 on 8158 Progress: 7049 on 8158 Progress: 7050 on 8158 Progress: 7051 on 8158 Progress: 7052 on 8158 Progress: 7053 on 8158 Progress: 7054 on 8158 Progress: 7055 on 8158 Progress: 7056 on 8158 Progress: 7057 on 8158 Progress: 7058 on 8158 Progress: 7059 on 8158 Progress: 7060 on 8158 Progress: 7061 on 8158 Progress: 7062 on 8158 Progress: 7063 on 8158 Progress: 7064 on 8158 Progress: 7065 on 8158 Progress: 7066 on 8158 Progress: 7067 on 8158 Progress: 7068 on 8158 Progress: 7069 on 8158 Progress: 7070 on 8158 Progress: 7071 on 8158 Progress: 7072 on 8158 Progress: 7073 on 8158 Progress: 7074 on 8158 Progress: 7075 on 8158 Progress: 7076 on 8158 Progress: 7077 on 8158 Progress: 7078 on 8158 Progress: 7079 on 8158 Progress: 7080 on 8158 Progress: 7081 on 8158 Progress: 7082 on 8158 Progress: 7083 on 8158 Progress: 7084 on 8158 Progress: 7085 on 8158 Progress: 7086 on 8158 Progress: 7087 on 8158 Progress: 7088 on 8158 Progress: 7089 on 8158 Progress: 7090 on 8158 Progress: 7091 on 8158 Progress: 7092 on 8158 Progress: 7093 on 8158 Progress: 7094 on 8158 Progress: 7095 on 8158 Progress: 7096 on 8158 Progress: 7097 on 8158 Progress: 7098 on 8158 Progress: 7099 on 8158 Progress: 7100 on 8158 Progress: 7101 on 8158 Progress: 7102 on 8158 Progress: 7103 on 8158 Progress: 7104 on 8158 Progress: 7105 on 8158 Progress: 7106 on 8158 Progress: 7107 on 8158 Progress: 7108 on 8158 Progress: 7109 on 8158 Progress: 7110 on 8158 Progress: 7111 on 8158 Progress: 7112 on 8158 Progress: 7113 on 8158 Progress: 7114 on 8158 Progress: 7115 on 8158 Progress: 7116 on 8158 Progress: 7117 on 8158 Progress: 7118 on 8158 Progress: 7119 on 8158 Progress: 7120 on 8158 Progress: 7121 on 8158 Progress: 7122 on 8158 Progress: 7123 on 8158 Progress: 7124 on 8158 Progress: 7125 on 8158 Progress: 7126 on 8158 Progress: 7127 on 8158 Progress: 7128 on 8158 Progress: 7129 on 8158 Progress: 7130 on 8158 Progress: 7131 on 8158 Progress: 7132 on 8158 Progress: 7133 on 8158 Progress: 7134 on 8158 Progress: 7135 on 8158 Progress: 7136 on 8158 Progress: 7137 on 8158 Progress: 7138 on 8158 Progress: 7139 on 8158 Progress: 7140 on 8158 Progress: 7141 on 8158 Progress: 7142 on 8158 Progress: 7143 on 8158 Progress: 7144 on 8158 Progress: 7145 on 8158 Progress: 7146 on 8158 Progress: 7147 on 8158 Progress: 7148 on 8158 Progress: 7149 on 8158 Progress: 7150 on 8158 Progress: 7151 on 8158 Progress: 7152 on 8158 Progress: 7153 on 8158 Progress: 7154 on 8158 Progress: 7155 on 8158 Progress: 7156 on 8158 Progress: 7157 on 8158 Progress: 7158 on 8158 Progress: 7159 on 8158 Progress: 7160 on 8158 Progress: 7161 on 8158 Progress: 7162 on 8158 Progress: 7163 on 8158 Progress: 7164 on 8158 Progress: 7165 on 8158 Progress: 7166 on 8158 Progress: 7167 on 8158 Progress: 7168 on 8158 Progress: 7169 on 8158 Progress: 7170 on 8158 Progress: 7171 on 8158 Progress: 7172 on 8158 Progress: 7173 on 8158 Progress: 7174 on 8158 Progress: 7175 on 8158 Progress: 7176 on 8158 Progress: 7177 on 8158 Progress: 7178 on 8158 Progress: 7179 on 8158 Progress: 7180 on 8158 Progress: 7181 on 8158 Progress: 7182 on 8158 Progress: 7183 on 8158 Progress: 7184 on 8158 Progress: 7185 on 8158 Progress: 7186 on 8158 Progress: 7187 on 8158 Progress: 7188 on 8158 Progress: 7189 on 8158 Progress: 7190 on 8158 Progress: 7191 on 8158 Progress: 7192 on 8158 Progress: 7193 on 8158 Progress: 7194 on 8158 Progress: 7195 on 8158 Progress: 7196 on 8158 Progress: 7197 on 8158 Progress: 7198 on 8158 Progress: 7199 on 8158 Progress: 7200 on 8158 Progress: 7201 on 8158 Progress: 7202 on 8158 Progress: 7203 on 8158 Progress: 7204 on 8158 Progress: 7205 on 8158 Progress: 7206 on 8158 Progress: 7207 on 8158 Progress: 7208 on 8158 Progress: 7209 on 8158 Progress: 7210 on 8158 Progress: 7211 on 8158 Progress: 7212 on 8158 Progress: 7213 on 8158 Progress: 7214 on 8158 Progress: 7215 on 8158 Progress: 7216 on 8158 Progress: 7217 on 8158 Progress: 7218 on 8158 Progress: 7219 on 8158 Progress: 7220 on 8158 Progress: 7221 on 8158 Progress: 7222 on 8158 Progress: 7223 on 8158 Progress: 7224 on 8158 Progress: 7225 on 8158 Progress: 7226 on 8158 Progress: 7227 on 8158 Progress: 7228 on 8158 Progress: 7229 on 8158 Progress: 7230 on 8158 Progress: 7231 on 8158 Progress: 7232 on 8158 Progress: 7233 on 8158 Progress: 7234 on 8158 Progress: 7235 on 8158 Progress: 7236 on 8158 Progress: 7237 on 8158 Progress: 7238 on 8158 Progress: 7239 on 8158 Progress: 7240 on 8158 Progress: 7241 on 8158 Progress: 7242 on 8158 Progress: 7243 on 8158 Progress: 7244 on 8158 Progress: 7245 on 8158 Progress: 7246 on 8158 Progress: 7247 on 8158 Progress: 7248 on 8158 Progress: 7249 on 8158 Progress: 7250 on 8158 Progress: 7251 on 8158 Progress: 7252 on 8158 Progress: 7253 on 8158 Progress: 7254 on 8158 Progress: 7255 on 8158 Progress: 7256 on 8158 Progress: 7257 on 8158 Progress: 7258 on 8158 Progress: 7259 on 8158 Progress: 7260 on 8158 Progress: 7261 on 8158 Progress: 7262 on 8158 Progress: 7263 on 8158 Progress: 7264 on 8158 Progress: 7265 on 8158 Progress: 7266 on 8158 Progress: 7267 on 8158 Progress: 7268 on 8158 Progress: 7269 on 8158 Progress: 7270 on 8158 Progress: 7271 on 8158 Progress: 7272 on 8158 Progress: 7273 on 8158 Progress: 7274 on 8158 Progress: 7275 on 8158 Progress: 7276 on 8158 Progress: 7277 on 8158 Progress: 7278 on 8158 Progress: 7279 on 8158 Progress: 7280 on 8158 Progress: 7281 on 8158 Progress: 7282 on 8158 Progress: 7283 on 8158 Progress: 7284 on 8158 Progress: 7285 on 8158 Progress: 7286 on 8158 Progress: 7287 on 8158 Progress: 7288 on 8158 Progress: 7289 on 8158 Progress: 7290 on 8158 Progress: 7291 on 8158 Progress: 7292 on 8158 Progress: 7293 on 8158 Progress: 7294 on 8158 Progress: 7295 on 8158 Progress: 7296 on 8158 Progress: 7297 on 8158 Progress: 7298 on 8158 Progress: 7299 on 8158 Progress: 7300 on 8158 Progress: 7301 on 8158 Progress: 7302 on 8158 Progress: 7303 on 8158 Progress: 7304 on 8158 Progress: 7305 on 8158 Progress: 7306 on 8158 Progress: 7307 on 8158 Progress: 7308 on 8158 Progress: 7309 on 8158 Progress: 7310 on 8158 Progress: 7311 on 8158 Progress: 7312 on 8158 Progress: 7313 on 8158 Progress: 7314 on 8158 Progress: 7315 on 8158 Progress: 7316 on 8158 Progress: 7317 on 8158 Progress: 7318 on 8158 Progress: 7319 on 8158 Progress: 7320 on 8158 Progress: 7321 on 8158 Progress: 7322 on 8158 Progress: 7323 on 8158 Progress: 7324 on 8158 Progress: 7325 on 8158 Progress: 7326 on 8158 Progress: 7327 on 8158 Progress: 7328 on 8158 Progress: 7329 on 8158 Progress: 7330 on 8158 Progress: 7331 on 8158 Progress: 7332 on 8158 Progress: 7333 on 8158 Progress: 7334 on 8158 Progress: 7335 on 8158 Progress: 7336 on 8158 Progress: 7337 on 8158 Progress: 7338 on 8158 Progress: 7339 on 8158 Progress: 7340 on 8158 Progress: 7341 on 8158 Progress: 7342 on 8158 Progress: 7343 on 8158 Progress: 7344 on 8158 Progress: 7345 on 8158 Progress: 7346 on 8158 Progress: 7347 on 8158 Progress: 7348 on 8158 Progress: 7349 on 8158 Progress: 7350 on 8158 Progress: 7351 on 8158 Progress: 7352 on 8158 Progress: 7353 on 8158 Progress: 7354 on 8158 Progress: 7355 on 8158 Progress: 7356 on 8158 Progress: 7357 on 8158 Progress: 7358 on 8158 Progress: 7359 on 8158 Progress: 7360 on 8158 Progress: 7361 on 8158 Progress: 7362 on 8158 Progress: 7363 on 8158 Progress: 7364 on 8158 Progress: 7365 on 8158 Progress: 7366 on 8158 Progress: 7367 on 8158 Progress: 7368 on 8158 Progress: 7369 on 8158 Progress: 7370 on 8158 Progress: 7371 on 8158 Progress: 7372 on 8158 Progress: 7373 on 8158 Progress: 7374 on 8158 Progress: 7375 on 8158 Progress: 7376 on 8158 Progress: 7377 on 8158 Progress: 7378 on 8158 Progress: 7379 on 8158 Progress: 7380 on 8158 Progress: 7381 on 8158 Progress: 7382 on 8158 Progress: 7383 on 8158 Progress: 7384 on 8158 Progress: 7385 on 8158 Progress: 7386 on 8158 Progress: 7387 on 8158 Progress: 7388 on 8158 Progress: 7389 on 8158 Progress: 7390 on 8158 Progress: 7391 on 8158 Progress: 7392 on 8158 Progress: 7393 on 8158 Progress: 7394 on 8158 Progress: 7395 on 8158 Progress: 7396 on 8158 Progress: 7397 on 8158 Progress: 7398 on 8158 Progress: 7399 on 8158 Progress: 7400 on 8158 Progress: 7401 on 8158 Progress: 7402 on 8158 Progress: 7403 on 8158 Progress: 7404 on 8158 Progress: 7405 on 8158 Progress: 7406 on 8158 Progress: 7407 on 8158 Progress: 7408 on 8158 Progress: 7409 on 8158 Progress: 7410 on 8158 Progress: 7411 on 8158 Progress: 7412 on 8158 Progress: 7413 on 8158 Progress: 7414 on 8158 Progress: 7415 on 8158 Progress: 7416 on 8158 Progress: 7417 on 8158 Progress: 7418 on 8158 Progress: 7419 on 8158 Progress: 7420 on 8158 Progress: 7421 on 8158 Progress: 7422 on 8158 Progress: 7423 on 8158 Progress: 7424 on 8158 Progress: 7425 on 8158 Progress: 7426 on 8158 Progress: 7427 on 8158 Progress: 7428 on 8158 Progress: 7429 on 8158 Progress: 7430 on 8158 Progress: 7431 on 8158 Progress: 7432 on 8158 Progress: 7433 on 8158 Progress: 7434 on 8158 Progress: 7435 on 8158 Progress: 7436 on 8158 Progress: 7437 on 8158 Progress: 7438 on 8158 Progress: 7439 on 8158 Progress: 7440 on 8158 Progress: 7441 on 8158 Progress: 7442 on 8158 Progress: 7443 on 8158 Progress: 7444 on 8158 Progress: 7445 on 8158 Progress: 7446 on 8158 Progress: 7447 on 8158 Progress: 7448 on 8158 Progress: 7449 on 8158 Progress: 7450 on 8158 Progress: 7451 on 8158 Progress: 7452 on 8158 Progress: 7453 on 8158 Progress: 7454 on 8158 Progress: 7455 on 8158 Progress: 7456 on 8158 Progress: 7457 on 8158 Progress: 7458 on 8158 Progress: 7459 on 8158 Progress: 7460 on 8158 Progress: 7461 on 8158 Progress: 7462 on 8158 Progress: 7463 on 8158 Progress: 7464 on 8158 Progress: 7465 on 8158 Progress: 7466 on 8158 Progress: 7467 on 8158 Progress: 7468 on 8158 Progress: 7469 on 8158 Progress: 7470 on 8158 Progress: 7471 on 8158 Progress: 7472 on 8158 Progress: 7473 on 8158 Progress: 7474 on 8158 Progress: 7475 on 8158 Progress: 7476 on 8158 Progress: 7477 on 8158 Progress: 7478 on 8158 Progress: 7479 on 8158 Progress: 7480 on 8158 Progress: 7481 on 8158 Progress: 7482 on 8158 Progress: 7483 on 8158 Progress: 7484 on 8158 Progress: 7485 on 8158 Progress: 7486 on 8158 Progress: 7487 on 8158 Progress: 7488 on 8158 Progress: 7489 on 8158 Progress: 7490 on 8158 Progress: 7491 on 8158 Progress: 7492 on 8158 Progress: 7493 on 8158 Progress: 7494 on 8158 Progress: 7495 on 8158 Progress: 7496 on 8158 Progress: 7497 on 8158 Progress: 7498 on 8158 Progress: 7499 on 8158 Progress: 7500 on 8158 Progress: 7501 on 8158 Progress: 7502 on 8158 Progress: 7503 on 8158 Progress: 7504 on 8158 Progress: 7505 on 8158 Progress: 7506 on 8158 Progress: 7507 on 8158 Progress: 7508 on 8158 Progress: 7509 on 8158 Progress: 7510 on 8158 Progress: 7511 on 8158 Progress: 7512 on 8158 Progress: 7513 on 8158 Progress: 7514 on 8158 Progress: 7515 on 8158 Progress: 7516 on 8158 Progress: 7517 on 8158 Progress: 7518 on 8158 Progress: 7519 on 8158 Progress: 7520 on 8158 Progress: 7521 on 8158 Progress: 7522 on 8158 Progress: 7523 on 8158 Progress: 7524 on 8158 Progress: 7525 on 8158 Progress: 7526 on 8158 Progress: 7527 on 8158 Progress: 7528 on 8158 Progress: 7529 on 8158 Progress: 7530 on 8158 Progress: 7531 on 8158 Progress: 7532 on 8158 Progress: 7533 on 8158 Progress: 7534 on 8158 Progress: 7535 on 8158 Progress: 7536 on 8158 Progress: 7537 on 8158 Progress: 7538 on 8158 Progress: 7539 on 8158 Progress: 7540 on 8158 Progress: 7541 on 8158 Progress: 7542 on 8158 Progress: 7543 on 8158 Progress: 7544 on 8158 Progress: 7545 on 8158 Progress: 7546 on 8158 Progress: 7547 on 8158 Progress: 7548 on 8158 Progress: 7549 on 8158 Progress: 7550 on 8158 Progress: 7551 on 8158 Progress: 7552 on 8158 Progress: 7553 on 8158 Progress: 7554 on 8158 Progress: 7555 on 8158 Progress: 7556 on 8158 Progress: 7557 on 8158 Progress: 7558 on 8158 Progress: 7559 on 8158 Progress: 7560 on 8158 Progress: 7561 on 8158 Progress: 7562 on 8158 Progress: 7563 on 8158 Progress: 7564 on 8158 Progress: 7565 on 8158 Progress: 7566 on 8158 Progress: 7567 on 8158 Progress: 7568 on 8158 Progress: 7569 on 8158 Progress: 7570 on 8158 Progress: 7571 on 8158 Progress: 7572 on 8158 Progress: 7573 on 8158 Progress: 7574 on 8158 Progress: 7575 on 8158 Progress: 7576 on 8158 Progress: 7577 on 8158 Progress: 7578 on 8158 Progress: 7579 on 8158 Progress: 7580 on 8158 Progress: 7581 on 8158 Progress: 7582 on 8158 Progress: 7583 on 8158 Progress: 7584 on 8158 Progress: 7585 on 8158 Progress: 7586 on 8158 Progress: 7587 on 8158 Progress: 7588 on 8158 Progress: 7589 on 8158 Progress: 7590 on 8158 Progress: 7591 on 8158 Progress: 7592 on 8158 Progress: 7593 on 8158 Progress: 7594 on 8158 Progress: 7595 on 8158 Progress: 7596 on 8158 Progress: 7597 on 8158 Progress: 7598 on 8158 Progress: 7599 on 8158 Progress: 7600 on 8158 Progress: 7601 on 8158 Progress: 7602 on 8158 Progress: 7603 on 8158 Progress: 7604 on 8158 Progress: 7605 on 8158 Progress: 7606 on 8158 Progress: 7607 on 8158 Progress: 7608 on 8158 Progress: 7609 on 8158 Progress: 7610 on 8158 Progress: 7611 on 8158 Progress: 7612 on 8158 Progress: 7613 on 8158 Progress: 7614 on 8158 Progress: 7615 on 8158 Progress: 7616 on 8158 Progress: 7617 on 8158 Progress: 7618 on 8158 Progress: 7619 on 8158 Progress: 7620 on 8158 Progress: 7621 on 8158 Progress: 7622 on 8158 Progress: 7623 on 8158 Progress: 7624 on 8158 Progress: 7625 on 8158 Progress: 7626 on 8158 Progress: 7627 on 8158 Progress: 7628 on 8158 Progress: 7629 on 8158 Progress: 7630 on 8158 Progress: 7631 on 8158 Progress: 7632 on 8158 Progress: 7633 on 8158 Progress: 7634 on 8158 Progress: 7635 on 8158 Progress: 7636 on 8158 Progress: 7637 on 8158 Progress: 7638 on 8158 Progress: 7639 on 8158 Progress: 7640 on 8158 Progress: 7641 on 8158 Progress: 7642 on 8158 Progress: 7643 on 8158 Progress: 7644 on 8158 Progress: 7645 on 8158 Progress: 7646 on 8158 Progress: 7647 on 8158 Progress: 7648 on 8158 Progress: 7649 on 8158 Progress: 7650 on 8158 Progress: 7651 on 8158 Progress: 7652 on 8158 Progress: 7653 on 8158 Progress: 7654 on 8158 Progress: 7655 on 8158 Progress: 7656 on 8158 Progress: 7657 on 8158 Progress: 7658 on 8158 Progress: 7659 on 8158 Progress: 7660 on 8158 Progress: 7661 on 8158 Progress: 7662 on 8158 Progress: 7663 on 8158 Progress: 7664 on 8158 Progress: 7665 on 8158 Progress: 7666 on 8158 Progress: 7667 on 8158 Progress: 7668 on 8158 Progress: 7669 on 8158 Progress: 7670 on 8158 Progress: 7671 on 8158 Progress: 7672 on 8158 Progress: 7673 on 8158 Progress: 7674 on 8158 Progress: 7675 on 8158 Progress: 7676 on 8158 Progress: 7677 on 8158 Progress: 7678 on 8158 Progress: 7679 on 8158 Progress: 7680 on 8158 Progress: 7681 on 8158 Progress: 7682 on 8158 Progress: 7683 on 8158 Progress: 7684 on 8158 Progress: 7685 on 8158 Progress: 7686 on 8158 Progress: 7687 on 8158 Progress: 7688 on 8158 Progress: 7689 on 8158 Progress: 7690 on 8158 Progress: 7691 on 8158 Progress: 7692 on 8158 Progress: 7693 on 8158 Progress: 7694 on 8158 Progress: 7695 on 8158 Progress: 7696 on 8158 Progress: 7697 on 8158 Progress: 7698 on 8158 Progress: 7699 on 8158 Progress: 7700 on 8158 Progress: 7701 on 8158 Progress: 7702 on 8158 Progress: 7703 on 8158 Progress: 7704 on 8158 Progress: 7705 on 8158 Progress: 7706 on 8158 Progress: 7707 on 8158 Progress: 7708 on 8158 Progress: 7709 on 8158 Progress: 7710 on 8158 Progress: 7711 on 8158 Progress: 7712 on 8158 Progress: 7713 on 8158 Progress: 7714 on 8158 Progress: 7715 on 8158 Progress: 7716 on 8158 Progress: 7717 on 8158 Progress: 7718 on 8158 Progress: 7719 on 8158 Progress: 7720 on 8158 Progress: 7721 on 8158 Progress: 7722 on 8158 Progress: 7723 on 8158 Progress: 7724 on 8158 Progress: 7725 on 8158 Progress: 7726 on 8158 Progress: 7727 on 8158 Progress: 7728 on 8158 Progress: 7729 on 8158 Progress: 7730 on 8158 Progress: 7731 on 8158 Progress: 7732 on 8158 Progress: 7733 on 8158 Progress: 7734 on 8158 Progress: 7735 on 8158 Progress: 7736 on 8158 Progress: 7737 on 8158 Progress: 7738 on 8158 Progress: 7739 on 8158 Progress: 7740 on 8158 Progress: 7741 on 8158 Progress: 7742 on 8158 Progress: 7743 on 8158 Progress: 7744 on 8158 Progress: 7745 on 8158 Progress: 7746 on 8158 Progress: 7747 on 8158 Progress: 7748 on 8158 Progress: 7749 on 8158 Progress: 7750 on 8158 Progress: 7751 on 8158 Progress: 7752 on 8158 Progress: 7753 on 8158 Progress: 7754 on 8158 Progress: 7755 on 8158 Progress: 7756 on 8158 Progress: 7757 on 8158 Progress: 7758 on 8158 Progress: 7759 on 8158 Progress: 7760 on 8158 Progress: 7761 on 8158 Progress: 7762 on 8158 Progress: 7763 on 8158 Progress: 7764 on 8158 Progress: 7765 on 8158 Progress: 7766 on 8158 Progress: 7767 on 8158 Progress: 7768 on 8158 Progress: 7769 on 8158 Progress: 7770 on 8158 Progress: 7771 on 8158 Progress: 7772 on 8158 Progress: 7773 on 8158 Progress: 7774 on 8158 Progress: 7775 on 8158 Progress: 7776 on 8158 Progress: 7777 on 8158 Progress: 7778 on 8158 Progress: 7779 on 8158 Progress: 7780 on 8158 Progress: 7781 on 8158 Progress: 7782 on 8158 Progress: 7783 on 8158 Progress: 7784 on 8158 Progress: 7785 on 8158 Progress: 7786 on 8158 Progress: 7787 on 8158 Progress: 7788 on 8158 Progress: 7789 on 8158 Progress: 7790 on 8158 Progress: 7791 on 8158 Progress: 7792 on 8158 Progress: 7793 on 8158 Progress: 7794 on 8158 Progress: 7795 on 8158 Progress: 7796 on 8158 Progress: 7797 on 8158 Progress: 7798 on 8158 Progress: 7799 on 8158 Progress: 7800 on 8158 Progress: 7801 on 8158 Progress: 7802 on 8158 Progress: 7803 on 8158 Progress: 7804 on 8158 Progress: 7805 on 8158 Progress: 7806 on 8158 Progress: 7807 on 8158 Progress: 7808 on 8158 Progress: 7809 on 8158 Progress: 7810 on 8158 Progress: 7811 on 8158 Progress: 7812 on 8158 Progress: 7813 on 8158 Progress: 7814 on 8158 Progress: 7815 on 8158 Progress: 7816 on 8158 Progress: 7817 on 8158 Progress: 7818 on 8158 Progress: 7819 on 8158 Progress: 7820 on 8158 Progress: 7821 on 8158 Progress: 7822 on 8158 Progress: 7823 on 8158 Progress: 7824 on 8158 Progress: 7825 on 8158 Progress: 7826 on 8158 Progress: 7827 on 8158 Progress: 7828 on 8158 Progress: 7829 on 8158 Progress: 7830 on 8158 Progress: 7831 on 8158 Progress: 7832 on 8158 Progress: 7833 on 8158 Progress: 7834 on 8158 Progress: 7835 on 8158 Progress: 7836 on 8158 Progress: 7837 on 8158 Progress: 7838 on 8158 Progress: 7839 on 8158 Progress: 7840 on 8158 Progress: 7841 on 8158 Progress: 7842 on 8158 Progress: 7843 on 8158 Progress: 7844 on 8158 Progress: 7845 on 8158 Progress: 7846 on 8158 Progress: 7847 on 8158 Progress: 7848 on 8158 Progress: 7849 on 8158 Progress: 7850 on 8158 Progress: 7851 on 8158 Progress: 7852 on 8158 Progress: 7853 on 8158 Progress: 7854 on 8158 Progress: 7855 on 8158 Progress: 7856 on 8158 Progress: 7857 on 8158 Progress: 7858 on 8158 Progress: 7859 on 8158 Progress: 7860 on 8158 Progress: 7861 on 8158 Progress: 7862 on 8158 Progress: 7863 on 8158 Progress: 7864 on 8158 Progress: 7865 on 8158 Progress: 7866 on 8158 Progress: 7867 on 8158 Progress: 7868 on 8158 Progress: 7869 on 8158 Progress: 7870 on 8158 Progress: 7871 on 8158 Progress: 7872 on 8158 Progress: 7873 on 8158 Progress: 7874 on 8158 Progress: 7875 on 8158 Progress: 7876 on 8158 Progress: 7877 on 8158 Progress: 7878 on 8158 Progress: 7879 on 8158 Progress: 7880 on 8158 Progress: 7881 on 8158 Progress: 7882 on 8158 Progress: 7883 on 8158 Progress: 7884 on 8158 Progress: 7885 on 8158 Progress: 7886 on 8158 Progress: 7887 on 8158 Progress: 7888 on 8158 Progress: 7889 on 8158 Progress: 7890 on 8158 Progress: 7891 on 8158 Progress: 7892 on 8158 Progress: 7893 on 8158 Progress: 7894 on 8158 Progress: 7895 on 8158 Progress: 7896 on 8158 Progress: 7897 on 8158 Progress: 7898 on 8158 Progress: 7899 on 8158 Progress: 7900 on 8158 Progress: 7901 on 8158 Progress: 7902 on 8158 Progress: 7903 on 8158 Progress: 7904 on 8158 Progress: 7905 on 8158 Progress: 7906 on 8158 Progress: 7907 on 8158 Progress: 7908 on 8158 Progress: 7909 on 8158 Progress: 7910 on 8158 Progress: 7911 on 8158 Progress: 7912 on 8158 Progress: 7913 on 8158 Progress: 7914 on 8158 Progress: 7915 on 8158 Progress: 7916 on 8158 Progress: 7917 on 8158 Progress: 7918 on 8158 Progress: 7919 on 8158 Progress: 7920 on 8158 Progress: 7921 on 8158 Progress: 7922 on 8158 Progress: 7923 on 8158 Progress: 7924 on 8158 Progress: 7925 on 8158 Progress: 7926 on 8158 Progress: 7927 on 8158 Progress: 7928 on 8158 Progress: 7929 on 8158 Progress: 7930 on 8158 Progress: 7931 on 8158 Progress: 7932 on 8158 Progress: 7933 on 8158 Progress: 7934 on 8158 Progress: 7935 on 8158 Progress: 7936 on 8158 Progress: 7937 on 8158 Progress: 7938 on 8158 Progress: 7939 on 8158 Progress: 7940 on 8158 Progress: 7941 on 8158 Progress: 7942 on 8158 Progress: 7943 on 8158 Progress: 7944 on 8158 Progress: 7945 on 8158 Progress: 7946 on 8158 Progress: 7947 on 8158 Progress: 7948 on 8158 Progress: 7949 on 8158 Progress: 7950 on 8158 Progress: 7951 on 8158 Progress: 7952 on 8158 Progress: 7953 on 8158 Progress: 7954 on 8158 Progress: 7955 on 8158 Progress: 7956 on 8158 Progress: 7957 on 8158 Progress: 7958 on 8158 Progress: 7959 on 8158 Progress: 7960 on 8158 Progress: 7961 on 8158 Progress: 7962 on 8158 Progress: 7963 on 8158 Progress: 7964 on 8158 Progress: 7965 on 8158 Progress: 7966 on 8158 Progress: 7967 on 8158 Progress: 7968 on 8158 Progress: 7969 on 8158 Progress: 7970 on 8158 Progress: 7971 on 8158 Progress: 7972 on 8158 Progress: 7973 on 8158 Progress: 7974 on 8158 Progress: 7975 on 8158 Progress: 7976 on 8158 Progress: 7977 on 8158 Progress: 7978 on 8158 Progress: 7979 on 8158 Progress: 7980 on 8158 Progress: 7981 on 8158 Progress: 7982 on 8158 Progress: 7983 on 8158 Progress: 7984 on 8158 Progress: 7985 on 8158 Progress: 7986 on 8158 Progress: 7987 on 8158 Progress: 7988 on 8158 Progress: 7989 on 8158 Progress: 7990 on 8158 Progress: 7991 on 8158 Progress: 7992 on 8158 Progress: 7993 on 8158 Progress: 7994 on 8158 Progress: 7995 on 8158 Progress: 7996 on 8158 Progress: 7997 on 8158 Progress: 7998 on 8158 Progress: 7999 on 8158 Progress: 8000 on 8158 Progress: 8001 on 8158 Progress: 8002 on 8158 Progress: 8003 on 8158 Progress: 8004 on 8158 Progress: 8005 on 8158 Progress: 8006 on 8158 Progress: 8007 on 8158 Progress: 8008 on 8158 Progress: 8009 on 8158 Progress: 8010 on 8158 Progress: 8011 on 8158 Progress: 8012 on 8158 Progress: 8013 on 8158 Progress: 8014 on 8158 Progress: 8015 on 8158 Progress: 8016 on 8158 Progress: 8017 on 8158 Progress: 8018 on 8158 Progress: 8019 on 8158 Progress: 8020 on 8158 Progress: 8021 on 8158 Progress: 8022 on 8158 Progress: 8023 on 8158 Progress: 8024 on 8158 Progress: 8025 on 8158 Progress: 8026 on 8158 Progress: 8027 on 8158 Progress: 8028 on 8158 Progress: 8029 on 8158 Progress: 8030 on 8158 Progress: 8031 on 8158 Progress: 8032 on 8158 Progress: 8033 on 8158 Progress: 8034 on 8158 Progress: 8035 on 8158 Progress: 8036 on 8158 Progress: 8037 on 8158 Progress: 8038 on 8158 Progress: 8039 on 8158 Progress: 8040 on 8158 Progress: 8041 on 8158 Progress: 8042 on 8158 Progress: 8043 on 8158 Progress: 8044 on 8158 Progress: 8045 on 8158 Progress: 8046 on 8158 Progress: 8047 on 8158 Progress: 8048 on 8158 Progress: 8049 on 8158 Progress: 8050 on 8158 Progress: 8051 on 8158 Progress: 8052 on 8158 Progress: 8053 on 8158 Progress: 8054 on 8158 Progress: 8055 on 8158 Progress: 8056 on 8158 Progress: 8057 on 8158 Progress: 8058 on 8158 Progress: 8059 on 8158 Progress: 8060 on 8158 Progress: 8061 on 8158 Progress: 8062 on 8158 Progress: 8063 on 8158 Progress: 8064 on 8158 Progress: 8065 on 8158 Progress: 8066 on 8158 Progress: 8067 on 8158 Progress: 8068 on 8158 Progress: 8069 on 8158 Progress: 8070 on 8158 Progress: 8071 on 8158 Progress: 8072 on 8158 Progress: 8073 on 8158 Progress: 8074 on 8158 Progress: 8075 on 8158 Progress: 8076 on 8158 Progress: 8077 on 8158 Progress: 8078 on 8158 Progress: 8079 on 8158 Progress: 8080 on 8158 Progress: 8081 on 8158 Progress: 8082 on 8158 Progress: 8083 on 8158 Progress: 8084 on 8158 Progress: 8085 on 8158 Progress: 8086 on 8158 Progress: 8087 on 8158 Progress: 8088 on 8158 Progress: 8089 on 8158 Progress: 8090 on 8158 Progress: 8091 on 8158 Progress: 8092 on 8158 Progress: 8093 on 8158 Progress: 8094 on 8158 Progress: 8095 on 8158 Progress: 8096 on 8158 Progress: 8097 on 8158 Progress: 8098 on 8158 Progress: 8099 on 8158 Progress: 8100 on 8158 Progress: 8101 on 8158 Progress: 8102 on 8158 Progress: 8103 on 8158 Progress: 8104 on 8158 Progress: 8105 on 8158 Progress: 8106 on 8158 Progress: 8107 on 8158 Progress: 8108 on 8158 Progress: 8109 on 8158 Progress: 8110 on 8158 Progress: 8111 on 8158 Progress: 8112 on 8158 Progress: 8113 on 8158 Progress: 8114 on 8158 Progress: 8115 on 8158 Progress: 8116 on 8158 Progress: 8117 on 8158 Progress: 8118 on 8158 Progress: 8119 on 8158 Progress: 8120 on 8158 Progress: 8121 on 8158 Progress: 8122 on 8158 Progress: 8123 on 8158 Progress: 8124 on 8158 Progress: 8125 on 8158 Progress: 8126 on 8158 Progress: 8127 on 8158 Progress: 8128 on 8158 Progress: 8129 on 8158 Progress: 8130 on 8158 Progress: 8131 on 8158 Progress: 8132 on 8158 Progress: 8133 on 8158 Progress: 8134 on 8158 Progress: 8135 on 8158 Progress: 8136 on 8158 Progress: 8137 on 8158 Progress: 8138 on 8158 Progress: 8139 on 8158 Progress: 8140 on 8158 Progress: 8141 on 8158 Progress: 8142 on 8158 Progress: 8143 on 8158 Progress: 8144 on 8158 Progress: 8145 on 8158 Progress: 8146 on 8158 Progress: 8147 on 8158 Progress: 8148 on 8158 Progress: 8149 on 8158 Progress: 8150 on 8158 Progress: 8151 on 8158 Progress: 8152 on 8158 Progress: 8153 on 8158 Progress: 8154 on 8158 Progress: 8155 on 8158 Progress: 8156 on 8158 Progress: 8157 on 8158 Progress: 8158 on 8158
BN_autor <- BN_autor %>%
mutate(ZA_ADNOTACJE = ifelse(czy_nazwisko==FALSE|czy_imie==FALSE,paste("UWAGA! Konflikt w danych osobowych w polach 100 i 245. Porównaj pole autor w formularzu z polem BN: ",X245c,sep = ""),NA)) %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE,ZA_ADNOTACJE) %>%
mutate(nazwa = str_replace_all(str_to_lower(paste(AM_NAZWISKO,AM_IMIE, sep = "")), "\\W", "")) %>%
left_join(.,PBL_autorzy %>% select(AM_AUTOR_ID,AM_KRYPTONIM,AM_LICZBA_ZAPISOW,nazwa) %>% filter(is.na(AM_KRYPTONIM)),by="nazwa") %>%
arrange(ZA_UWAGI,AM_NAZWISKO,AM_IMIE,-AM_LICZBA_ZAPISOW)
BN_autor$id_grupy <- cumsum(!duplicated(BN_autor[1:3]))
BN_autor <- BN_autor[!duplicated(BN_autor$id_grupy),] %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE,ZA_ADNOTACJE,AM_AUTOR_ID)
#3: tytuł
#pole 245
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
if("$n" %in% colnames(marc_field_245)) {
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,`$a`,`$b`,`$n`,`$p`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = " "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = " "),
`$n` = paste(ifelse(is.na(`$n`),"",as.character(`$n`)),collapse = " "),
`$p` = paste(ifelse(is.na(`$p`),"",as.character(`$p`)),collapse = " ")) %>%
ungroup() %>%
unique() %>%
unite("ZA_TYTUL",`$a`:`$p`,sep = " ",na.rm = TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL," +"," "),
ZA_TYTUL = str_remove(ZA_TYTUL, "\\s+\\/\\s{0,}$"),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\.{3} \\.{3}","... "),
ZA_TYTUL = str_replace_all(ZA_TYTUL," ; ",". "),
ZA_TYTUL = gsub("( : )(.)",". \\U\\2",perl=TRUE,ZA_TYTUL)) %>%
select(ZA_UWAGI,ZA_TYTUL)
} else {
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,`$a`,`$b`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = " "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = " ")) %>%
ungroup() %>%
unique() %>%
unite("ZA_TYTUL",`$a`:`$b`,sep = " ",na.rm = TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL," +"," "),
ZA_TYTUL = str_remove(ZA_TYTUL, "\\s+\\/\\s{0,}$"),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\.{3} \\.{3}","... "),
ZA_TYTUL = str_replace_all(ZA_TYTUL," ; ",". "),
ZA_TYTUL = gsub("( : )(.)",". \\U\\2",perl=TRUE,ZA_TYTUL)) %>%
select(ZA_UWAGI,ZA_TYTUL)
}
#dopisanie gatunku do przedmiotowej na podstawie 655 i 650
gatunki_pbl <- data.frame(gatunek = c("aforyzm", "album", "antologia", "autobiografia", "dziennik", "esej", "felieton", "inne", "kazanie", "list", "miniatura prozą", "opowiadanie", "poemat", "powieść", "proza", "proza poetycka", "reportaż", "rozmyślanie religijne", "rysunek, obraz", "scenariusz", "szkic", "tekst biblijny", "tekst dramatyczny", "dramat", "wiersz", "wspomnienia", "wypowiedź", "pamiętniki", "poezja", "literatura podróżnicza", "satyra", "piosenka"))
#dramat, pamiętniki, poezja, literatura podróżnicza, satyra, piosenka
gatunki_bn <- data %>%
select(ZA_UWAGI,X655,X650)
gatunki_bn <- sqldf("select *
from gatunki_bn
left join gatunki_pbl on lower(gatunki_bn.X655) like '%'||gatunki_pbl.gatunek||'%'")
gatunki_bn <- sqldf("select *
from gatunki_bn
left join gatunki_pbl on lower(gatunki_bn.X650) like '%'||gatunki_pbl.gatunek||'%'")
colnames(gatunki_bn)[5] <- "gatunek2"
gatunki_bn <- gatunki_bn %>%
mutate(gatunek = ifelse(is.na(gatunek)&!is.na(gatunek2),as.character(gatunek2),as.character(gatunek)),
gatunek = ifelse(grepl("przypowieść",X655,ignore.case = TRUE)&!grepl("[^y]powieść",X655)&gatunek=="powieść","opowiadanie",as.character(gatunek))) %>%
filter(!is.na(gatunek)) %>%
select(ZA_UWAGI,gatunek) %>%
mutate(gatunek = ifelse(gatunek=="dramat","tekst dramatyczny",
ifelse(gatunek=="pamiętniki","wspomnienia",
ifelse(gatunek=="poezja","wiersz",
ifelse(gatunek=="literatura podróżnicza","reportaż",
ifelse(gatunek=="piosenka","wiersz",as.character(gatunek))))))) %>%
group_by(ZA_UWAGI) %>%
mutate(gatunek = paste(gatunek,collapse = ", ")) %>%
ungroup() %>%
unique() %>%
mutate(gatunek = gsub("(^.)","\\U\\1",perl = TRUE, gatunek))
#połączenie tytułu z gatunkiem
za_tytul <- marc_field_245 %>%
left_join(.,gatunki_bn,by="ZA_UWAGI") %>%
mutate(gatunek = paste("[",gatunek,"]",sep = ""),
gatunek = ifelse(gatunek=="[NA]",NA,as.character(gatunek))) %>%
unite("ZA_TYTUL", ZA_TYTUL:gatunek, sep = ". ",na.rm=TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\. \\.",". "),
ZA_TYTUL = str_replace(ZA_TYTUL,"(\\!)(\\.)|(\\?)(\\.)","\\1"))
#4: tytuł oryginału
#pole 246
marc_field_246 <- data %>%
select(ZA_UWAGI,X246)%>%
filter(X246!="") %>%
mutate(X246=str_remove_all(X246,"~"),
X246=str_replace_all(X246,"(^|\\|)","~\\1")) %>%
cSplit(.,"X246",sep = "~",direction = "long") %>%
filter(X246!="") %>%
mutate(X246=str_remove_all(X246,"^\\|")) %>%
mutate(indicator = str_replace_all(X246,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X246,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_246)[1]))
colnames(empty_table) <-subfield_list
marc_field_246<-cbind(marc_field_246,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_246$X246 <- str_replace(marc_field_246$X246,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_246[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_246$X246),str_replace_all(gsub(string,"\\3",marc_field_246$X246),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
if("$n" %in% colnames(marc_field_246)) {
marc_field_246 <- marc_field_246[, colSums(is.na(marc_field_246)) != nrow(marc_field_246)] %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`,`$b`,`$n`,`$p`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = ""),
`$n` = paste(ifelse(is.na(`$n`),"",as.character(`$n`)),collapse = ""),
`$p` = paste(ifelse(is.na(`$p`),"",as.character(`$p`)),collapse = "")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`:`$p`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
} else {
marc_field_246 <- marc_field_246[, colSums(is.na(marc_field_246)) != nrow(marc_field_246)] %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`,`$b`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = "")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`:`$b`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
}
#pole 500
marc_field_500 <- data %>%
select(ZA_UWAGI,X500)%>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"~"),
X500=str_replace_all(X500,"(^|\\|)","~\\1")) %>%
cSplit(.,"X500",sep = "~",direction = "long") %>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"^\\|")) %>%
mutate(indicator = str_replace_all(X500,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X500,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_500)[1]))
colnames(empty_table) <-subfield_list
marc_field_500<-cbind(marc_field_500,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_500$X500 <- str_replace(marc_field_500$X500,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_500[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_500$X500),str_replace_all(gsub(string,"\\3",marc_field_500$X500),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_500 <- marc_field_500 %>%
filter(grepl("oryg\\.\\:",X500)) %>%
mutate(X500 = str_remove(`$a`,"^Tyt\\. oryg\\.: |^Tyt\\, oryg\\.: |^.*?tyt\\. oryg\\.: "),
X500 = str_remove(X500, "\\s+\\/\\s{0,}$"),
X500 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X500),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X500),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X500),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X500),as.character(X500))))),
X500 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X500),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X500),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X500),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X500),as.character(X500))))),
X500 = str_replace_all(X500,"\\.{3} \\.{3}","... "),
X500 = str_remove(X500, "\\.$"),
X500 = str_remove(X500,"(,{0,1} {0,1})\\d{4}.*$|(, t|. T)yt. oryg. cyklu:")) %>%
select(ZA_UWAGI,X500)
#tytuł oryginału
za_tytul_oryginalu <- data %>%
select(ZA_UWAGI) %>%
left_join(.,marc_field_246,by="ZA_UWAGI") %>%
left_join(.,marc_field_500,by="ZA_UWAGI") %>%
mutate(X500 = ifelse(is.na(X500),NA,
ifelse(grepl("oryg",X500),NA,as.character(X500))),
X500 = ifelse(!is.na(X500)&grepl("\\. - ",X500),str_replace(X500,"(.*?)(\\. - .*$)","\\1"),as.character(X500)),
X500 = ifelse(!is.na(X500)&grepl("Na książce pseud",X500),str_replace(X500,"(.*?)(\\. Na książce pseud.*$)","\\1"),as.character(X500)),
X500 = ifelse(!is.na(X500)&grepl("Przekł\\. wg",X500),str_replace(X500,"(.*?)(\\. Przekł\\. wg.*$)","\\1"),as.character(X500)),
ZA_TYTUL_ORYGINALU = ifelse(is.na(X246)&is.na(X500),NA,
ifelse(!is.na(X500),as.character(X500),as.character(X246))),
ZA_TYTUL_ORYGINALU = str_remove_all(ZA_TYTUL_ORYGINALU,'\\"')) %>%
select(ZA_UWAGI,ZA_TYTUL_ORYGINALU)
#5: język oryginału
marc_field_041 <- data %>%
select(ZA_UWAGI,X041)%>%
filter(X041!="") %>%
mutate(X041=str_replace_all(X041,"(^|\\|)","~\\1")) %>%
cSplit(.,"X041",sep = "~",direction = "long") %>%
filter(X041!="") %>%
mutate(X041=str_remove_all(X041,"^\\|")) %>%
mutate(indicator = str_replace_all(X041,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X041,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_041)[1]))
colnames(empty_table) <-subfield_list
marc_field_041<-cbind(marc_field_041,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_041$X041 <- str_replace(marc_field_041$X041,subfield_list_char[i],"|\\1")
}
Progress: 1 on 7 Progress: 2 on 7 Progress: 3 on 7 Progress: 4 on 7 Progress: 5 on 7 Progress: 6 on 7 Progress: 7 on 7
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_041[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_041$X041),str_replace_all(gsub(string,"\\3",marc_field_041$X041),"\\${2}.", "~"),NA)
}
Progress: 1 on 7 Progress: 2 on 7 Progress: 3 on 7 Progress: 4 on 7 Progress: 5 on 7 Progress: 6 on 7 Progress: 7 on 7
za_jezyk_oryginalu <- data %>%
select(ZA_UWAGI) %>%
left_join(.,marc_field_041 %>% select(ZA_UWAGI,ZA_JEZYK_ORYGINALU = `$a`),by="ZA_UWAGI") %>%
mutate(ZA_JEZYK_ORYGINALU = str_replace_all(ZA_JEZYK_ORYGINALU,"\\$a",",")) %>%
unique()
#6: współtwórcy
marc_field_700 <- data %>%
select(ZA_UWAGI,X700)%>%
filter(X700!="") %>%
mutate(X700=str_replace_all(X700,"(..\\$a)","|\\1"),
X700=str_replace_all(X700,"(^|\\|)","~\\1")) %>%
cSplit(.,"X700",sep = "~",direction = "long") %>%
filter(X700!="") %>%
mutate(X700=str_remove_all(X700,"^\\|")) %>%
mutate(indicator = str_replace_all(X700,"(^.*?)(\\$.*)","\\1")) %>%
filter(X700!="")
subfield_list<- str_extract_all(data$X700,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_700)[1]))
colnames(empty_table) <-subfield_list
marc_field_700<-cbind(marc_field_700,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_700$X700 <- str_replace(marc_field_700$X700,subfield_list_char[i],"|\\1")
}
Progress: 1 on 10 Progress: 2 on 10 Progress: 3 on 10 Progress: 4 on 10 Progress: 5 on 10 Progress: 6 on 10 Progress: 7 on 10 Progress: 8 on 10 Progress: 9 on 10 Progress: 10 on 10
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_700[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_700$X700),str_replace_all(gsub(string,"\\3",marc_field_700$X700),"\\${2}.", "~"),NA)
}
Progress: 1 on 10 Progress: 2 on 10 Progress: 3 on 10 Progress: 4 on 10 Progress: 5 on 10 Progress: 6 on 10 Progress: 7 on 10 Progress: 8 on 10 Progress: 9 on 10 Progress: 10 on 10
BN_wspoltworca <- marc_field_700 %>%
select(ZA_UWAGI,osoba = `$a`,funkcja = `$e`) %>%
filter(!is.na(funkcja)) %>%
mutate(osoba = str_remove(osoba,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)"),
OS_NAZWISKO = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\1"),as.character(osoba)),
OS_IMIE = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\3"),"*"),
ws_prosty = str_replace_all(str_to_lower(osoba), "\\W", ""),
fu_prosta = str_replace_all(str_to_lower(funkcja), "\\W", "")) %>%
left_join(.,PBL_wspoltworcy %>% select(OS_OSOBA_ID,OS_LICZBA_ZAPISOW,nazwa_prosta),by=c("ws_prosty"="nazwa_prosta")) %>%
arrange(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,-OS_LICZBA_ZAPISOW)
BN_wspoltworca$id_grupy <- cumsum(!duplicated(BN_wspoltworca[1:2]))
BN_wspoltworca <- BN_wspoltworca[!duplicated(BN_wspoltworca$id_grupy),] %>%
left_join(.,PBL_funkcje,by=c("fu_prosta"="nazwa")) %>%
mutate(fo_symbol = ifelse(fo_symbol=="NULL",NA,as.character(fo_symbol))) %>%
select(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,OS_OSOBA_ID,fo_symbol,fo_nazwa,funkcja)
#tutaj przeszukać X245 i znaleźć błędy współtwórców
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,X245c=`$c`)
BN_wspoltworca <- BN_wspoltworca %>%
left_join(.,marc_field_245,by="ZA_UWAGI")
x <- 1:lengths(BN_wspoltworca[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
BN_wspoltworca$czy_nazwisko[i] <- str_detect(BN_wspoltworca$X245c[i],BN_wspoltworca$OS_NAZWISKO[i])
BN_wspoltworca$czy_imie[i] <- grepl(BN_wspoltworca$OS_IMIE[i],BN_wspoltworca$X245c[i])
}
Progress: 1 on 5890 Progress: 2 on 5890 Progress: 3 on 5890 Progress: 4 on 5890 Progress: 5 on 5890 Progress: 6 on 5890 Progress: 7 on 5890 Progress: 8 on 5890 Progress: 9 on 5890 Progress: 10 on 5890 Progress: 11 on 5890 Progress: 12 on 5890 Progress: 13 on 5890 Progress: 14 on 5890 Progress: 15 on 5890 Progress: 16 on 5890 Progress: 17 on 5890 Progress: 18 on 5890 Progress: 19 on 5890 Progress: 20 on 5890 Progress: 21 on 5890 Progress: 22 on 5890 Progress: 23 on 5890 Progress: 24 on 5890 Progress: 25 on 5890 Progress: 26 on 5890 Progress: 27 on 5890 Progress: 28 on 5890 Progress: 29 on 5890 Progress: 30 on 5890 Progress: 31 on 5890 Progress: 32 on 5890 Progress: 33 on 5890 Progress: 34 on 5890 Progress: 35 on 5890 Progress: 36 on 5890 Progress: 37 on 5890 Progress: 38 on 5890 Progress: 39 on 5890 Progress: 40 on 5890 Progress: 41 on 5890 Progress: 42 on 5890 Progress: 43 on 5890 Progress: 44 on 5890 Progress: 45 on 5890 Progress: 46 on 5890 Progress: 47 on 5890 Progress: 48 on 5890 Progress: 49 on 5890 Progress: 50 on 5890 Progress: 51 on 5890 Progress: 52 on 5890 Progress: 53 on 5890 Progress: 54 on 5890 Progress: 55 on 5890 Progress: 56 on 5890 Progress: 57 on 5890 Progress: 58 on 5890 Progress: 59 on 5890 Progress: 60 on 5890 Progress: 61 on 5890 Progress: 62 on 5890 Progress: 63 on 5890 Progress: 64 on 5890 Progress: 65 on 5890 Progress: 66 on 5890 Progress: 67 on 5890 Progress: 68 on 5890 Progress: 69 on 5890 Progress: 70 on 5890 Progress: 71 on 5890 Progress: 72 on 5890 Progress: 73 on 5890 Progress: 74 on 5890 Progress: 75 on 5890 Progress: 76 on 5890 Progress: 77 on 5890 Progress: 78 on 5890 Progress: 79 on 5890 Progress: 80 on 5890 Progress: 81 on 5890 Progress: 82 on 5890 Progress: 83 on 5890 Progress: 84 on 5890 Progress: 85 on 5890 Progress: 86 on 5890 Progress: 87 on 5890 Progress: 88 on 5890 Progress: 89 on 5890 Progress: 90 on 5890 Progress: 91 on 5890 Progress: 92 on 5890 Progress: 93 on 5890 Progress: 94 on 5890 Progress: 95 on 5890 Progress: 96 on 5890 Progress: 97 on 5890 Progress: 98 on 5890 Progress: 99 on 5890 Progress: 100 on 5890 Progress: 101 on 5890 Progress: 102 on 5890 Progress: 103 on 5890 Progress: 104 on 5890 Progress: 105 on 5890 Progress: 106 on 5890 Progress: 107 on 5890 Progress: 108 on 5890 Progress: 109 on 5890 Progress: 110 on 5890 Progress: 111 on 5890 Progress: 112 on 5890 Progress: 113 on 5890 Progress: 114 on 5890 Progress: 115 on 5890 Progress: 116 on 5890 Progress: 117 on 5890 Progress: 118 on 5890 Progress: 119 on 5890 Progress: 120 on 5890 Progress: 121 on 5890 Progress: 122 on 5890 Progress: 123 on 5890 Progress: 124 on 5890 Progress: 125 on 5890 Progress: 126 on 5890 Progress: 127 on 5890 Progress: 128 on 5890 Progress: 129 on 5890 Progress: 130 on 5890 Progress: 131 on 5890 Progress: 132 on 5890 Progress: 133 on 5890 Progress: 134 on 5890 Progress: 135 on 5890 Progress: 136 on 5890 Progress: 137 on 5890 Progress: 138 on 5890 Progress: 139 on 5890 Progress: 140 on 5890 Progress: 141 on 5890 Progress: 142 on 5890 Progress: 143 on 5890 Progress: 144 on 5890 Progress: 145 on 5890 Progress: 146 on 5890 Progress: 147 on 5890 Progress: 148 on 5890 Progress: 149 on 5890 Progress: 150 on 5890 Progress: 151 on 5890 Progress: 152 on 5890 Progress: 153 on 5890 Progress: 154 on 5890 Progress: 155 on 5890 Progress: 156 on 5890 Progress: 157 on 5890 Progress: 158 on 5890 Progress: 159 on 5890 Progress: 160 on 5890 Progress: 161 on 5890 Progress: 162 on 5890 Progress: 163 on 5890 Progress: 164 on 5890 Progress: 165 on 5890 Progress: 166 on 5890 Progress: 167 on 5890 Progress: 168 on 5890 Progress: 169 on 5890 Progress: 170 on 5890 Progress: 171 on 5890 Progress: 172 on 5890 Progress: 173 on 5890 Progress: 174 on 5890 Progress: 175 on 5890 Progress: 176 on 5890 Progress: 177 on 5890 Progress: 178 on 5890 Progress: 179 on 5890 Progress: 180 on 5890 Progress: 181 on 5890 Progress: 182 on 5890 Progress: 183 on 5890 Progress: 184 on 5890 Progress: 185 on 5890 Progress: 186 on 5890 Progress: 187 on 5890 Progress: 188 on 5890 Progress: 189 on 5890 Progress: 190 on 5890 Progress: 191 on 5890 Progress: 192 on 5890 Progress: 193 on 5890 Progress: 194 on 5890 Progress: 195 on 5890 Progress: 196 on 5890 Progress: 197 on 5890 Progress: 198 on 5890 Progress: 199 on 5890 Progress: 200 on 5890 Progress: 201 on 5890 Progress: 202 on 5890 Progress: 203 on 5890 Progress: 204 on 5890 Progress: 205 on 5890 Progress: 206 on 5890 Progress: 207 on 5890 Progress: 208 on 5890 Progress: 209 on 5890 Progress: 210 on 5890 Progress: 211 on 5890 Progress: 212 on 5890 Progress: 213 on 5890 Progress: 214 on 5890 Progress: 215 on 5890 Progress: 216 on 5890 Progress: 217 on 5890 Progress: 218 on 5890 Progress: 219 on 5890 Progress: 220 on 5890 Progress: 221 on 5890 Progress: 222 on 5890 Progress: 223 on 5890 Progress: 224 on 5890 Progress: 225 on 5890 Progress: 226 on 5890 Progress: 227 on 5890 Progress: 228 on 5890 Progress: 229 on 5890 Progress: 230 on 5890 Progress: 231 on 5890 Progress: 232 on 5890 Progress: 233 on 5890 Progress: 234 on 5890 Progress: 235 on 5890 Progress: 236 on 5890 Progress: 237 on 5890 Progress: 238 on 5890 Progress: 239 on 5890 Progress: 240 on 5890 Progress: 241 on 5890 Progress: 242 on 5890 Progress: 243 on 5890 Progress: 244 on 5890 Progress: 245 on 5890 Progress: 246 on 5890 Progress: 247 on 5890 Progress: 248 on 5890 Progress: 249 on 5890 Progress: 250 on 5890 Progress: 251 on 5890 Progress: 252 on 5890 Progress: 253 on 5890 Progress: 254 on 5890 Progress: 255 on 5890 Progress: 256 on 5890 Progress: 257 on 5890 Progress: 258 on 5890 Progress: 259 on 5890 Progress: 260 on 5890 Progress: 261 on 5890 Progress: 262 on 5890 Progress: 263 on 5890 Progress: 264 on 5890 Progress: 265 on 5890 Progress: 266 on 5890 Progress: 267 on 5890 Progress: 268 on 5890 Progress: 269 on 5890 Progress: 270 on 5890 Progress: 271 on 5890 Progress: 272 on 5890 Progress: 273 on 5890 Progress: 274 on 5890 Progress: 275 on 5890 Progress: 276 on 5890 Progress: 277 on 5890 Progress: 278 on 5890 Progress: 279 on 5890 Progress: 280 on 5890 Progress: 281 on 5890 Progress: 282 on 5890 Progress: 283 on 5890 Progress: 284 on 5890 Progress: 285 on 5890 Progress: 286 on 5890 Progress: 287 on 5890 Progress: 288 on 5890 Progress: 289 on 5890 Progress: 290 on 5890 Progress: 291 on 5890 Progress: 292 on 5890 Progress: 293 on 5890 Progress: 294 on 5890 Progress: 295 on 5890 Progress: 296 on 5890 Progress: 297 on 5890 Progress: 298 on 5890 Progress: 299 on 5890 Progress: 300 on 5890 Progress: 301 on 5890 Progress: 302 on 5890 Progress: 303 on 5890 Progress: 304 on 5890 Progress: 305 on 5890 Progress: 306 on 5890 Progress: 307 on 5890 Progress: 308 on 5890 Progress: 309 on 5890 Progress: 310 on 5890 Progress: 311 on 5890 Progress: 312 on 5890 Progress: 313 on 5890 Progress: 314 on 5890 Progress: 315 on 5890 Progress: 316 on 5890 Progress: 317 on 5890 Progress: 318 on 5890 Progress: 319 on 5890 Progress: 320 on 5890 Progress: 321 on 5890 Progress: 322 on 5890 Progress: 323 on 5890 Progress: 324 on 5890 Progress: 325 on 5890 Progress: 326 on 5890 Progress: 327 on 5890 Progress: 328 on 5890 Progress: 329 on 5890 Progress: 330 on 5890 Progress: 331 on 5890 Progress: 332 on 5890 Progress: 333 on 5890 Progress: 334 on 5890 Progress: 335 on 5890 Progress: 336 on 5890 Progress: 337 on 5890 Progress: 338 on 5890 Progress: 339 on 5890 Progress: 340 on 5890 Progress: 341 on 5890 Progress: 342 on 5890 Progress: 343 on 5890 Progress: 344 on 5890 Progress: 345 on 5890 Progress: 346 on 5890 Progress: 347 on 5890 Progress: 348 on 5890 Progress: 349 on 5890 Progress: 350 on 5890 Progress: 351 on 5890 Progress: 352 on 5890 Progress: 353 on 5890 Progress: 354 on 5890 Progress: 355 on 5890 Progress: 356 on 5890 Progress: 357 on 5890 Progress: 358 on 5890 Progress: 359 on 5890 Progress: 360 on 5890 Progress: 361 on 5890 Progress: 362 on 5890 Progress: 363 on 5890 Progress: 364 on 5890 Progress: 365 on 5890 Progress: 366 on 5890 Progress: 367 on 5890 Progress: 368 on 5890 Progress: 369 on 5890 Progress: 370 on 5890 Progress: 371 on 5890 Progress: 372 on 5890 Progress: 373 on 5890 Progress: 374 on 5890 Progress: 375 on 5890 Progress: 376 on 5890 Progress: 377 on 5890 Progress: 378 on 5890 Progress: 379 on 5890 Progress: 380 on 5890 Progress: 381 on 5890 Progress: 382 on 5890 Progress: 383 on 5890 Progress: 384 on 5890 Progress: 385 on 5890 Progress: 386 on 5890 Progress: 387 on 5890 Progress: 388 on 5890 Progress: 389 on 5890 Progress: 390 on 5890 Progress: 391 on 5890 Progress: 392 on 5890 Progress: 393 on 5890 Progress: 394 on 5890 Progress: 395 on 5890 Progress: 396 on 5890 Progress: 397 on 5890 Progress: 398 on 5890 Progress: 399 on 5890 Progress: 400 on 5890 Progress: 401 on 5890 Progress: 402 on 5890 Progress: 403 on 5890 Progress: 404 on 5890 Progress: 405 on 5890 Progress: 406 on 5890 Progress: 407 on 5890 Progress: 408 on 5890 Progress: 409 on 5890 Progress: 410 on 5890 Progress: 411 on 5890 Progress: 412 on 5890 Progress: 413 on 5890 Progress: 414 on 5890 Progress: 415 on 5890 Progress: 416 on 5890 Progress: 417 on 5890 Progress: 418 on 5890 Progress: 419 on 5890 Progress: 420 on 5890 Progress: 421 on 5890 Progress: 422 on 5890 Progress: 423 on 5890 Progress: 424 on 5890 Progress: 425 on 5890 Progress: 426 on 5890 Progress: 427 on 5890 Progress: 428 on 5890 Progress: 429 on 5890 Progress: 430 on 5890 Progress: 431 on 5890 Progress: 432 on 5890 Progress: 433 on 5890 Progress: 434 on 5890 Progress: 435 on 5890 Progress: 436 on 5890 Progress: 437 on 5890 Progress: 438 on 5890 Progress: 439 on 5890 Progress: 440 on 5890 Progress: 441 on 5890 Progress: 442 on 5890 Progress: 443 on 5890 Progress: 444 on 5890 Progress: 445 on 5890 Progress: 446 on 5890 Progress: 447 on 5890 Progress: 448 on 5890 Progress: 449 on 5890 Progress: 450 on 5890 Progress: 451 on 5890 Progress: 452 on 5890 Progress: 453 on 5890 Progress: 454 on 5890 Progress: 455 on 5890 Progress: 456 on 5890 Progress: 457 on 5890 Progress: 458 on 5890 Progress: 459 on 5890 Progress: 460 on 5890 Progress: 461 on 5890 Progress: 462 on 5890 Progress: 463 on 5890 Progress: 464 on 5890 Progress: 465 on 5890 Progress: 466 on 5890 Progress: 467 on 5890 Progress: 468 on 5890 Progress: 469 on 5890 Progress: 470 on 5890 Progress: 471 on 5890 Progress: 472 on 5890 Progress: 473 on 5890 Progress: 474 on 5890 Progress: 475 on 5890 Progress: 476 on 5890 Progress: 477 on 5890 Progress: 478 on 5890 Progress: 479 on 5890 Progress: 480 on 5890 Progress: 481 on 5890 Progress: 482 on 5890 Progress: 483 on 5890 Progress: 484 on 5890 Progress: 485 on 5890 Progress: 486 on 5890 Progress: 487 on 5890 Progress: 488 on 5890 Progress: 489 on 5890 Progress: 490 on 5890 Progress: 491 on 5890 Progress: 492 on 5890 Progress: 493 on 5890 Progress: 494 on 5890 Progress: 495 on 5890 Progress: 496 on 5890 Progress: 497 on 5890 Progress: 498 on 5890 Progress: 499 on 5890 Progress: 500 on 5890 Progress: 501 on 5890 Progress: 502 on 5890 Progress: 503 on 5890 Progress: 504 on 5890 Progress: 505 on 5890 Progress: 506 on 5890 Progress: 507 on 5890 Progress: 508 on 5890 Progress: 509 on 5890 Progress: 510 on 5890 Progress: 511 on 5890 Progress: 512 on 5890 Progress: 513 on 5890 Progress: 514 on 5890 Progress: 515 on 5890 Progress: 516 on 5890 Progress: 517 on 5890 Progress: 518 on 5890 Progress: 519 on 5890 Progress: 520 on 5890 Progress: 521 on 5890 Progress: 522 on 5890 Progress: 523 on 5890 Progress: 524 on 5890 Progress: 525 on 5890 Progress: 526 on 5890 Progress: 527 on 5890 Progress: 528 on 5890 Progress: 529 on 5890 Progress: 530 on 5890 Progress: 531 on 5890 Progress: 532 on 5890 Progress: 533 on 5890 Progress: 534 on 5890 Progress: 535 on 5890 Progress: 536 on 5890 Progress: 537 on 5890 Progress: 538 on 5890 Progress: 539 on 5890 Progress: 540 on 5890 Progress: 541 on 5890 Progress: 542 on 5890 Progress: 543 on 5890 Progress: 544 on 5890 Progress: 545 on 5890 Progress: 546 on 5890 Progress: 547 on 5890 Progress: 548 on 5890 Progress: 549 on 5890 Progress: 550 on 5890 Progress: 551 on 5890 Progress: 552 on 5890 Progress: 553 on 5890 Progress: 554 on 5890 Progress: 555 on 5890 Progress: 556 on 5890 Progress: 557 on 5890 Progress: 558 on 5890 Progress: 559 on 5890 Progress: 560 on 5890 Progress: 561 on 5890 Progress: 562 on 5890 Progress: 563 on 5890 Progress: 564 on 5890 Progress: 565 on 5890 Progress: 566 on 5890 Progress: 567 on 5890 Progress: 568 on 5890 Progress: 569 on 5890 Progress: 570 on 5890 Progress: 571 on 5890 Progress: 572 on 5890 Progress: 573 on 5890 Progress: 574 on 5890 Progress: 575 on 5890 Progress: 576 on 5890 Progress: 577 on 5890 Progress: 578 on 5890 Progress: 579 on 5890 Progress: 580 on 5890 Progress: 581 on 5890 Progress: 582 on 5890 Progress: 583 on 5890 Progress: 584 on 5890 Progress: 585 on 5890 Progress: 586 on 5890 Progress: 587 on 5890 Progress: 588 on 5890 Progress: 589 on 5890 Progress: 590 on 5890 Progress: 591 on 5890 Progress: 592 on 5890 Progress: 593 on 5890 Progress: 594 on 5890 Progress: 595 on 5890 Progress: 596 on 5890 Progress: 597 on 5890 Progress: 598 on 5890 Progress: 599 on 5890 Progress: 600 on 5890 Progress: 601 on 5890 Progress: 602 on 5890 Progress: 603 on 5890 Progress: 604 on 5890 Progress: 605 on 5890 Progress: 606 on 5890 Progress: 607 on 5890 Progress: 608 on 5890 Progress: 609 on 5890 Progress: 610 on 5890 Progress: 611 on 5890 Progress: 612 on 5890 Progress: 613 on 5890 Progress: 614 on 5890 Progress: 615 on 5890 Progress: 616 on 5890 Progress: 617 on 5890 Progress: 618 on 5890 Progress: 619 on 5890 Progress: 620 on 5890 Progress: 621 on 5890 Progress: 622 on 5890 Progress: 623 on 5890 Progress: 624 on 5890 Progress: 625 on 5890 Progress: 626 on 5890 Progress: 627 on 5890 Progress: 628 on 5890 Progress: 629 on 5890 Progress: 630 on 5890 Progress: 631 on 5890 Progress: 632 on 5890 Progress: 633 on 5890 Progress: 634 on 5890 Progress: 635 on 5890 Progress: 636 on 5890 Progress: 637 on 5890 Progress: 638 on 5890 Progress: 639 on 5890 Progress: 640 on 5890 Progress: 641 on 5890 Progress: 642 on 5890 Progress: 643 on 5890 Progress: 644 on 5890 Progress: 645 on 5890 Progress: 646 on 5890 Progress: 647 on 5890 Progress: 648 on 5890 Progress: 649 on 5890 Progress: 650 on 5890 Progress: 651 on 5890 Progress: 652 on 5890 Progress: 653 on 5890 Progress: 654 on 5890 Progress: 655 on 5890 Progress: 656 on 5890 Progress: 657 on 5890 Progress: 658 on 5890 Progress: 659 on 5890 Progress: 660 on 5890 Progress: 661 on 5890 Progress: 662 on 5890 Progress: 663 on 5890 Progress: 664 on 5890 Progress: 665 on 5890 Progress: 666 on 5890 Progress: 667 on 5890 Progress: 668 on 5890 Progress: 669 on 5890 Progress: 670 on 5890 Progress: 671 on 5890 Progress: 672 on 5890 Progress: 673 on 5890 Progress: 674 on 5890 Progress: 675 on 5890 Progress: 676 on 5890 Progress: 677 on 5890 Progress: 678 on 5890 Progress: 679 on 5890 Progress: 680 on 5890 Progress: 681 on 5890 Progress: 682 on 5890 Progress: 683 on 5890 Progress: 684 on 5890 Progress: 685 on 5890 Progress: 686 on 5890 Progress: 687 on 5890 Progress: 688 on 5890 Progress: 689 on 5890 Progress: 690 on 5890 Progress: 691 on 5890 Progress: 692 on 5890 Progress: 693 on 5890 Progress: 694 on 5890 Progress: 695 on 5890 Progress: 696 on 5890 Progress: 697 on 5890 Progress: 698 on 5890 Progress: 699 on 5890 Progress: 700 on 5890 Progress: 701 on 5890 Progress: 702 on 5890 Progress: 703 on 5890 Progress: 704 on 5890 Progress: 705 on 5890 Progress: 706 on 5890 Progress: 707 on 5890 Progress: 708 on 5890 Progress: 709 on 5890 Progress: 710 on 5890 Progress: 711 on 5890 Progress: 712 on 5890 Progress: 713 on 5890 Progress: 714 on 5890 Progress: 715 on 5890 Progress: 716 on 5890 Progress: 717 on 5890 Progress: 718 on 5890 Progress: 719 on 5890 Progress: 720 on 5890 Progress: 721 on 5890 Progress: 722 on 5890 Progress: 723 on 5890 Progress: 724 on 5890 Progress: 725 on 5890 Progress: 726 on 5890 Progress: 727 on 5890 Progress: 728 on 5890 Progress: 729 on 5890 Progress: 730 on 5890 Progress: 731 on 5890 Progress: 732 on 5890 Progress: 733 on 5890 Progress: 734 on 5890 Progress: 735 on 5890 Progress: 736 on 5890 Progress: 737 on 5890 Progress: 738 on 5890 Progress: 739 on 5890 Progress: 740 on 5890 Progress: 741 on 5890 Progress: 742 on 5890 Progress: 743 on 5890 Progress: 744 on 5890 Progress: 745 on 5890 Progress: 746 on 5890 Progress: 747 on 5890 Progress: 748 on 5890 Progress: 749 on 5890 Progress: 750 on 5890 Progress: 751 on 5890 Progress: 752 on 5890 Progress: 753 on 5890 Progress: 754 on 5890 Progress: 755 on 5890 Progress: 756 on 5890 Progress: 757 on 5890 Progress: 758 on 5890 Progress: 759 on 5890 Progress: 760 on 5890 Progress: 761 on 5890 Progress: 762 on 5890 Progress: 763 on 5890 Progress: 764 on 5890 Progress: 765 on 5890 Progress: 766 on 5890 Progress: 767 on 5890 Progress: 768 on 5890 Progress: 769 on 5890 Progress: 770 on 5890 Progress: 771 on 5890 Progress: 772 on 5890 Progress: 773 on 5890 Progress: 774 on 5890 Progress: 775 on 5890 Progress: 776 on 5890 Progress: 777 on 5890 Progress: 778 on 5890 Progress: 779 on 5890 Progress: 780 on 5890 Progress: 781 on 5890 Progress: 782 on 5890 Progress: 783 on 5890 Progress: 784 on 5890 Progress: 785 on 5890 Progress: 786 on 5890 Progress: 787 on 5890 Progress: 788 on 5890 Progress: 789 on 5890 Progress: 790 on 5890 Progress: 791 on 5890 Progress: 792 on 5890 Progress: 793 on 5890 Progress: 794 on 5890 Progress: 795 on 5890 Progress: 796 on 5890 Progress: 797 on 5890 Progress: 798 on 5890 Progress: 799 on 5890 Progress: 800 on 5890 Progress: 801 on 5890 Progress: 802 on 5890 Progress: 803 on 5890 Progress: 804 on 5890 Progress: 805 on 5890 Progress: 806 on 5890 Progress: 807 on 5890 Progress: 808 on 5890 Progress: 809 on 5890 Progress: 810 on 5890 Progress: 811 on 5890 Progress: 812 on 5890 Progress: 813 on 5890 Progress: 814 on 5890 Progress: 815 on 5890 Progress: 816 on 5890 Progress: 817 on 5890 Progress: 818 on 5890 Progress: 819 on 5890 Progress: 820 on 5890 Progress: 821 on 5890 Progress: 822 on 5890 Progress: 823 on 5890 Progress: 824 on 5890 Progress: 825 on 5890 Progress: 826 on 5890 Progress: 827 on 5890 Progress: 828 on 5890 Progress: 829 on 5890 Progress: 830 on 5890 Progress: 831 on 5890 Progress: 832 on 5890 Progress: 833 on 5890 Progress: 834 on 5890 Progress: 835 on 5890 Progress: 836 on 5890 Progress: 837 on 5890 Progress: 838 on 5890 Progress: 839 on 5890 Progress: 840 on 5890 Progress: 841 on 5890 Progress: 842 on 5890 Progress: 843 on 5890 Progress: 844 on 5890 Progress: 845 on 5890 Progress: 846 on 5890 Progress: 847 on 5890 Progress: 848 on 5890 Progress: 849 on 5890 Progress: 850 on 5890 Progress: 851 on 5890 Progress: 852 on 5890 Progress: 853 on 5890 Progress: 854 on 5890 Progress: 855 on 5890 Progress: 856 on 5890 Progress: 857 on 5890 Progress: 858 on 5890 Progress: 859 on 5890 Progress: 860 on 5890 Progress: 861 on 5890 Progress: 862 on 5890 Progress: 863 on 5890 Progress: 864 on 5890 Progress: 865 on 5890 Progress: 866 on 5890 Progress: 867 on 5890 Progress: 868 on 5890 Progress: 869 on 5890 Progress: 870 on 5890 Progress: 871 on 5890 Progress: 872 on 5890 Progress: 873 on 5890 Progress: 874 on 5890 Progress: 875 on 5890 Progress: 876 on 5890 Progress: 877 on 5890 Progress: 878 on 5890 Progress: 879 on 5890 Progress: 880 on 5890 Progress: 881 on 5890 Progress: 882 on 5890 Progress: 883 on 5890 Progress: 884 on 5890 Progress: 885 on 5890 Progress: 886 on 5890 Progress: 887 on 5890 Progress: 888 on 5890 Progress: 889 on 5890 Progress: 890 on 5890 Progress: 891 on 5890 Progress: 892 on 5890 Progress: 893 on 5890 Progress: 894 on 5890 Progress: 895 on 5890 Progress: 896 on 5890 Progress: 897 on 5890 Progress: 898 on 5890 Progress: 899 on 5890 Progress: 900 on 5890 Progress: 901 on 5890 Progress: 902 on 5890 Progress: 903 on 5890 Progress: 904 on 5890 Progress: 905 on 5890 Progress: 906 on 5890 Progress: 907 on 5890 Progress: 908 on 5890 Progress: 909 on 5890 Progress: 910 on 5890 Progress: 911 on 5890 Progress: 912 on 5890 Progress: 913 on 5890 Progress: 914 on 5890 Progress: 915 on 5890 Progress: 916 on 5890 Progress: 917 on 5890 Progress: 918 on 5890 Progress: 919 on 5890 Progress: 920 on 5890 Progress: 921 on 5890 Progress: 922 on 5890 Progress: 923 on 5890 Progress: 924 on 5890 Progress: 925 on 5890 Progress: 926 on 5890 Progress: 927 on 5890 Progress: 928 on 5890 Progress: 929 on 5890 Progress: 930 on 5890 Progress: 931 on 5890 Progress: 932 on 5890 Progress: 933 on 5890 Progress: 934 on 5890 Progress: 935 on 5890 Progress: 936 on 5890 Progress: 937 on 5890 Progress: 938 on 5890 Progress: 939 on 5890 Progress: 940 on 5890 Progress: 941 on 5890 Progress: 942 on 5890 Progress: 943 on 5890 Progress: 944 on 5890 Progress: 945 on 5890 Progress: 946 on 5890 Progress: 947 on 5890 Progress: 948 on 5890 Progress: 949 on 5890 Progress: 950 on 5890 Progress: 951 on 5890 Progress: 952 on 5890 Progress: 953 on 5890 Progress: 954 on 5890 Progress: 955 on 5890 Progress: 956 on 5890 Progress: 957 on 5890 Progress: 958 on 5890 Progress: 959 on 5890 Progress: 960 on 5890 Progress: 961 on 5890 Progress: 962 on 5890 Progress: 963 on 5890 Progress: 964 on 5890 Progress: 965 on 5890 Progress: 966 on 5890 Progress: 967 on 5890 Progress: 968 on 5890 Progress: 969 on 5890 Progress: 970 on 5890 Progress: 971 on 5890 Progress: 972 on 5890 Progress: 973 on 5890 Progress: 974 on 5890 Progress: 975 on 5890 Progress: 976 on 5890 Progress: 977 on 5890 Progress: 978 on 5890 Progress: 979 on 5890 Progress: 980 on 5890 Progress: 981 on 5890 Progress: 982 on 5890 Progress: 983 on 5890 Progress: 984 on 5890 Progress: 985 on 5890 Progress: 986 on 5890 Progress: 987 on 5890 Progress: 988 on 5890 Progress: 989 on 5890 Progress: 990 on 5890 Progress: 991 on 5890 Progress: 992 on 5890 Progress: 993 on 5890 Progress: 994 on 5890 Progress: 995 on 5890 Progress: 996 on 5890 Progress: 997 on 5890 Progress: 998 on 5890 Progress: 999 on 5890 Progress: 1000 on 5890 Progress: 1001 on 5890 Progress: 1002 on 5890 Progress: 1003 on 5890 Progress: 1004 on 5890 Progress: 1005 on 5890 Progress: 1006 on 5890 Progress: 1007 on 5890 Progress: 1008 on 5890 Progress: 1009 on 5890 Progress: 1010 on 5890 Progress: 1011 on 5890 Progress: 1012 on 5890 Progress: 1013 on 5890 Progress: 1014 on 5890 Progress: 1015 on 5890 Progress: 1016 on 5890 Progress: 1017 on 5890 Progress: 1018 on 5890 Progress: 1019 on 5890 Progress: 1020 on 5890 Progress: 1021 on 5890 Progress: 1022 on 5890 Progress: 1023 on 5890 Progress: 1024 on 5890 Progress: 1025 on 5890 Progress: 1026 on 5890 Progress: 1027 on 5890 Progress: 1028 on 5890 Progress: 1029 on 5890 Progress: 1030 on 5890 Progress: 1031 on 5890 Progress: 1032 on 5890 Progress: 1033 on 5890 Progress: 1034 on 5890 Progress: 1035 on 5890 Progress: 1036 on 5890 Progress: 1037 on 5890 Progress: 1038 on 5890 Progress: 1039 on 5890 Progress: 1040 on 5890 Progress: 1041 on 5890 Progress: 1042 on 5890 Progress: 1043 on 5890 Progress: 1044 on 5890 Progress: 1045 on 5890 Progress: 1046 on 5890 Progress: 1047 on 5890 Progress: 1048 on 5890 Progress: 1049 on 5890 Progress: 1050 on 5890 Progress: 1051 on 5890 Progress: 1052 on 5890 Progress: 1053 on 5890 Progress: 1054 on 5890 Progress: 1055 on 5890 Progress: 1056 on 5890 Progress: 1057 on 5890 Progress: 1058 on 5890 Progress: 1059 on 5890 Progress: 1060 on 5890 Progress: 1061 on 5890 Progress: 1062 on 5890 Progress: 1063 on 5890 Progress: 1064 on 5890 Progress: 1065 on 5890 Progress: 1066 on 5890 Progress: 1067 on 5890 Progress: 1068 on 5890 Progress: 1069 on 5890 Progress: 1070 on 5890 Progress: 1071 on 5890 Progress: 1072 on 5890 Progress: 1073 on 5890 Progress: 1074 on 5890 Progress: 1075 on 5890 Progress: 1076 on 5890 Progress: 1077 on 5890 Progress: 1078 on 5890 Progress: 1079 on 5890 Progress: 1080 on 5890 Progress: 1081 on 5890 Progress: 1082 on 5890 Progress: 1083 on 5890 Progress: 1084 on 5890 Progress: 1085 on 5890 Progress: 1086 on 5890 Progress: 1087 on 5890 Progress: 1088 on 5890 Progress: 1089 on 5890 Progress: 1090 on 5890 Progress: 1091 on 5890 Progress: 1092 on 5890 Progress: 1093 on 5890 Progress: 1094 on 5890 Progress: 1095 on 5890 Progress: 1096 on 5890 Progress: 1097 on 5890 Progress: 1098 on 5890 Progress: 1099 on 5890 Progress: 1100 on 5890 Progress: 1101 on 5890 Progress: 1102 on 5890 Progress: 1103 on 5890 Progress: 1104 on 5890 Progress: 1105 on 5890 Progress: 1106 on 5890 Progress: 1107 on 5890 Progress: 1108 on 5890 Progress: 1109 on 5890 Progress: 1110 on 5890 Progress: 1111 on 5890 Progress: 1112 on 5890 Progress: 1113 on 5890 Progress: 1114 on 5890 Progress: 1115 on 5890 Progress: 1116 on 5890 Progress: 1117 on 5890 Progress: 1118 on 5890 Progress: 1119 on 5890 Progress: 1120 on 5890 Progress: 1121 on 5890 Progress: 1122 on 5890 Progress: 1123 on 5890 Progress: 1124 on 5890 Progress: 1125 on 5890 Progress: 1126 on 5890 Progress: 1127 on 5890 Progress: 1128 on 5890 Progress: 1129 on 5890 Progress: 1130 on 5890 Progress: 1131 on 5890 Progress: 1132 on 5890 Progress: 1133 on 5890 Progress: 1134 on 5890 Progress: 1135 on 5890 Progress: 1136 on 5890 Progress: 1137 on 5890 Progress: 1138 on 5890 Progress: 1139 on 5890 Progress: 1140 on 5890 Progress: 1141 on 5890 Progress: 1142 on 5890 Progress: 1143 on 5890 Progress: 1144 on 5890 Progress: 1145 on 5890 Progress: 1146 on 5890 Progress: 1147 on 5890 Progress: 1148 on 5890 Progress: 1149 on 5890 Progress: 1150 on 5890 Progress: 1151 on 5890 Progress: 1152 on 5890 Progress: 1153 on 5890 Progress: 1154 on 5890 Progress: 1155 on 5890 Progress: 1156 on 5890 Progress: 1157 on 5890 Progress: 1158 on 5890 Progress: 1159 on 5890 Progress: 1160 on 5890 Progress: 1161 on 5890 Progress: 1162 on 5890 Progress: 1163 on 5890 Progress: 1164 on 5890 Progress: 1165 on 5890 Progress: 1166 on 5890 Progress: 1167 on 5890 Progress: 1168 on 5890 Progress: 1169 on 5890 Progress: 1170 on 5890 Progress: 1171 on 5890 Progress: 1172 on 5890 Progress: 1173 on 5890 Progress: 1174 on 5890 Progress: 1175 on 5890 Progress: 1176 on 5890 Progress: 1177 on 5890 Progress: 1178 on 5890 Progress: 1179 on 5890 Progress: 1180 on 5890 Progress: 1181 on 5890 Progress: 1182 on 5890 Progress: 1183 on 5890 Progress: 1184 on 5890 Progress: 1185 on 5890 Progress: 1186 on 5890 Progress: 1187 on 5890 Progress: 1188 on 5890 Progress: 1189 on 5890 Progress: 1190 on 5890 Progress: 1191 on 5890 Progress: 1192 on 5890 Progress: 1193 on 5890 Progress: 1194 on 5890 Progress: 1195 on 5890 Progress: 1196 on 5890 Progress: 1197 on 5890 Progress: 1198 on 5890 Progress: 1199 on 5890 Progress: 1200 on 5890 Progress: 1201 on 5890 Progress: 1202 on 5890 Progress: 1203 on 5890 Progress: 1204 on 5890 Progress: 1205 on 5890 Progress: 1206 on 5890 Progress: 1207 on 5890 Progress: 1208 on 5890 Progress: 1209 on 5890 Progress: 1210 on 5890 Progress: 1211 on 5890 Progress: 1212 on 5890 Progress: 1213 on 5890 Progress: 1214 on 5890 Progress: 1215 on 5890 Progress: 1216 on 5890 Progress: 1217 on 5890 Progress: 1218 on 5890 Progress: 1219 on 5890 Progress: 1220 on 5890 Progress: 1221 on 5890 Progress: 1222 on 5890 Progress: 1223 on 5890 Progress: 1224 on 5890 Progress: 1225 on 5890 Progress: 1226 on 5890 Progress: 1227 on 5890 Progress: 1228 on 5890 Progress: 1229 on 5890 Progress: 1230 on 5890 Progress: 1231 on 5890 Progress: 1232 on 5890 Progress: 1233 on 5890 Progress: 1234 on 5890 Progress: 1235 on 5890 Progress: 1236 on 5890 Progress: 1237 on 5890 Progress: 1238 on 5890 Progress: 1239 on 5890 Progress: 1240 on 5890 Progress: 1241 on 5890 Progress: 1242 on 5890 Progress: 1243 on 5890 Progress: 1244 on 5890 Progress: 1245 on 5890 Progress: 1246 on 5890 Progress: 1247 on 5890 Progress: 1248 on 5890 Progress: 1249 on 5890 Progress: 1250 on 5890 Progress: 1251 on 5890 Progress: 1252 on 5890 Progress: 1253 on 5890 Progress: 1254 on 5890 Progress: 1255 on 5890 Progress: 1256 on 5890 Progress: 1257 on 5890 Progress: 1258 on 5890 Progress: 1259 on 5890 Progress: 1260 on 5890 Progress: 1261 on 5890 Progress: 1262 on 5890 Progress: 1263 on 5890 Progress: 1264 on 5890 Progress: 1265 on 5890 Progress: 1266 on 5890 Progress: 1267 on 5890 Progress: 1268 on 5890 Progress: 1269 on 5890 Progress: 1270 on 5890 Progress: 1271 on 5890 Progress: 1272 on 5890 Progress: 1273 on 5890 Progress: 1274 on 5890 Progress: 1275 on 5890 Progress: 1276 on 5890 Progress: 1277 on 5890 Progress: 1278 on 5890 Progress: 1279 on 5890 Progress: 1280 on 5890 Progress: 1281 on 5890 Progress: 1282 on 5890 Progress: 1283 on 5890 Progress: 1284 on 5890 Progress: 1285 on 5890 Progress: 1286 on 5890 Progress: 1287 on 5890 Progress: 1288 on 5890 Progress: 1289 on 5890 Progress: 1290 on 5890 Progress: 1291 on 5890 Progress: 1292 on 5890 Progress: 1293 on 5890 Progress: 1294 on 5890 Progress: 1295 on 5890 Progress: 1296 on 5890 Progress: 1297 on 5890 Progress: 1298 on 5890 Progress: 1299 on 5890 Progress: 1300 on 5890 Progress: 1301 on 5890 Progress: 1302 on 5890 Progress: 1303 on 5890 Progress: 1304 on 5890 Progress: 1305 on 5890 Progress: 1306 on 5890 Progress: 1307 on 5890 Progress: 1308 on 5890 Progress: 1309 on 5890 Progress: 1310 on 5890 Progress: 1311 on 5890 Progress: 1312 on 5890 Progress: 1313 on 5890 Progress: 1314 on 5890 Progress: 1315 on 5890 Progress: 1316 on 5890 Progress: 1317 on 5890 Progress: 1318 on 5890 Progress: 1319 on 5890 Progress: 1320 on 5890 Progress: 1321 on 5890 Progress: 1322 on 5890 Progress: 1323 on 5890 Progress: 1324 on 5890 Progress: 1325 on 5890 Progress: 1326 on 5890 Progress: 1327 on 5890 Progress: 1328 on 5890 Progress: 1329 on 5890 Progress: 1330 on 5890 Progress: 1331 on 5890 Progress: 1332 on 5890 Progress: 1333 on 5890 Progress: 1334 on 5890 Progress: 1335 on 5890 Progress: 1336 on 5890 Progress: 1337 on 5890 Progress: 1338 on 5890 Progress: 1339 on 5890 Progress: 1340 on 5890 Progress: 1341 on 5890 Progress: 1342 on 5890 Progress: 1343 on 5890 Progress: 1344 on 5890 Progress: 1345 on 5890 Progress: 1346 on 5890 Progress: 1347 on 5890 Progress: 1348 on 5890 Progress: 1349 on 5890 Progress: 1350 on 5890 Progress: 1351 on 5890 Progress: 1352 on 5890 Progress: 1353 on 5890 Progress: 1354 on 5890 Progress: 1355 on 5890 Progress: 1356 on 5890 Progress: 1357 on 5890 Progress: 1358 on 5890 Progress: 1359 on 5890 Progress: 1360 on 5890 Progress: 1361 on 5890 Progress: 1362 on 5890 Progress: 1363 on 5890 Progress: 1364 on 5890 Progress: 1365 on 5890 Progress: 1366 on 5890 Progress: 1367 on 5890 Progress: 1368 on 5890 Progress: 1369 on 5890 Progress: 1370 on 5890 Progress: 1371 on 5890 Progress: 1372 on 5890 Progress: 1373 on 5890 Progress: 1374 on 5890 Progress: 1375 on 5890 Progress: 1376 on 5890 Progress: 1377 on 5890 Progress: 1378 on 5890 Progress: 1379 on 5890 Progress: 1380 on 5890 Progress: 1381 on 5890 Progress: 1382 on 5890 Progress: 1383 on 5890 Progress: 1384 on 5890 Progress: 1385 on 5890 Progress: 1386 on 5890 Progress: 1387 on 5890 Progress: 1388 on 5890 Progress: 1389 on 5890 Progress: 1390 on 5890 Progress: 1391 on 5890 Progress: 1392 on 5890 Progress: 1393 on 5890 Progress: 1394 on 5890 Progress: 1395 on 5890 Progress: 1396 on 5890 Progress: 1397 on 5890 Progress: 1398 on 5890 Progress: 1399 on 5890 Progress: 1400 on 5890 Progress: 1401 on 5890 Progress: 1402 on 5890 Progress: 1403 on 5890 Progress: 1404 on 5890 Progress: 1405 on 5890 Progress: 1406 on 5890 Progress: 1407 on 5890 Progress: 1408 on 5890 Progress: 1409 on 5890 Progress: 1410 on 5890 Progress: 1411 on 5890 Progress: 1412 on 5890 Progress: 1413 on 5890 Progress: 1414 on 5890 Progress: 1415 on 5890 Progress: 1416 on 5890 Progress: 1417 on 5890 Progress: 1418 on 5890 Progress: 1419 on 5890 Progress: 1420 on 5890 Progress: 1421 on 5890 Progress: 1422 on 5890 Progress: 1423 on 5890 Progress: 1424 on 5890 Progress: 1425 on 5890 Progress: 1426 on 5890 Progress: 1427 on 5890 Progress: 1428 on 5890 Progress: 1429 on 5890 Progress: 1430 on 5890 Progress: 1431 on 5890 Progress: 1432 on 5890 Progress: 1433 on 5890 Progress: 1434 on 5890 Progress: 1435 on 5890 Progress: 1436 on 5890 Progress: 1437 on 5890 Progress: 1438 on 5890 Progress: 1439 on 5890 Progress: 1440 on 5890 Progress: 1441 on 5890 Progress: 1442 on 5890 Progress: 1443 on 5890 Progress: 1444 on 5890 Progress: 1445 on 5890 Progress: 1446 on 5890 Progress: 1447 on 5890 Progress: 1448 on 5890 Progress: 1449 on 5890 Progress: 1450 on 5890 Progress: 1451 on 5890 Progress: 1452 on 5890 Progress: 1453 on 5890 Progress: 1454 on 5890 Progress: 1455 on 5890 Progress: 1456 on 5890 Progress: 1457 on 5890 Progress: 1458 on 5890 Progress: 1459 on 5890 Progress: 1460 on 5890 Progress: 1461 on 5890 Progress: 1462 on 5890 Progress: 1463 on 5890 Progress: 1464 on 5890 Progress: 1465 on 5890 Progress: 1466 on 5890 Progress: 1467 on 5890 Progress: 1468 on 5890 Progress: 1469 on 5890 Progress: 1470 on 5890 Progress: 1471 on 5890 Progress: 1472 on 5890 Progress: 1473 on 5890 Progress: 1474 on 5890 Progress: 1475 on 5890 Progress: 1476 on 5890 Progress: 1477 on 5890 Progress: 1478 on 5890 Progress: 1479 on 5890 Progress: 1480 on 5890 Progress: 1481 on 5890 Progress: 1482 on 5890 Progress: 1483 on 5890 Progress: 1484 on 5890 Progress: 1485 on 5890 Progress: 1486 on 5890 Progress: 1487 on 5890 Progress: 1488 on 5890 Progress: 1489 on 5890 Progress: 1490 on 5890 Progress: 1491 on 5890 Progress: 1492 on 5890 Progress: 1493 on 5890 Progress: 1494 on 5890 Progress: 1495 on 5890 Progress: 1496 on 5890 Progress: 1497 on 5890 Progress: 1498 on 5890 Progress: 1499 on 5890 Progress: 1500 on 5890 Progress: 1501 on 5890 Progress: 1502 on 5890 Progress: 1503 on 5890 Progress: 1504 on 5890 Progress: 1505 on 5890 Progress: 1506 on 5890 Progress: 1507 on 5890 Progress: 1508 on 5890 Progress: 1509 on 5890 Progress: 1510 on 5890 Progress: 1511 on 5890 Progress: 1512 on 5890 Progress: 1513 on 5890 Progress: 1514 on 5890 Progress: 1515 on 5890 Progress: 1516 on 5890 Progress: 1517 on 5890 Progress: 1518 on 5890 Progress: 1519 on 5890 Progress: 1520 on 5890 Progress: 1521 on 5890 Progress: 1522 on 5890 Progress: 1523 on 5890 Progress: 1524 on 5890 Progress: 1525 on 5890 Progress: 1526 on 5890 Progress: 1527 on 5890 Progress: 1528 on 5890 Progress: 1529 on 5890 Progress: 1530 on 5890 Progress: 1531 on 5890 Progress: 1532 on 5890 Progress: 1533 on 5890 Progress: 1534 on 5890 Progress: 1535 on 5890 Progress: 1536 on 5890 Progress: 1537 on 5890 Progress: 1538 on 5890 Progress: 1539 on 5890 Progress: 1540 on 5890 Progress: 1541 on 5890 Progress: 1542 on 5890 Progress: 1543 on 5890 Progress: 1544 on 5890 Progress: 1545 on 5890 Progress: 1546 on 5890 Progress: 1547 on 5890 Progress: 1548 on 5890 Progress: 1549 on 5890 Progress: 1550 on 5890 Progress: 1551 on 5890 Progress: 1552 on 5890 Progress: 1553 on 5890 Progress: 1554 on 5890 Progress: 1555 on 5890 Progress: 1556 on 5890 Progress: 1557 on 5890 Progress: 1558 on 5890 Progress: 1559 on 5890 Progress: 1560 on 5890 Progress: 1561 on 5890 Progress: 1562 on 5890 Progress: 1563 on 5890 Progress: 1564 on 5890 Progress: 1565 on 5890 Progress: 1566 on 5890 Progress: 1567 on 5890 Progress: 1568 on 5890 Progress: 1569 on 5890 Progress: 1570 on 5890 Progress: 1571 on 5890 Progress: 1572 on 5890 Progress: 1573 on 5890 Progress: 1574 on 5890 Progress: 1575 on 5890 Progress: 1576 on 5890 Progress: 1577 on 5890 Progress: 1578 on 5890 Progress: 1579 on 5890 Progress: 1580 on 5890 Progress: 1581 on 5890 Progress: 1582 on 5890 Progress: 1583 on 5890 Progress: 1584 on 5890 Progress: 1585 on 5890 Progress: 1586 on 5890 Progress: 1587 on 5890 Progress: 1588 on 5890 Progress: 1589 on 5890 Progress: 1590 on 5890 Progress: 1591 on 5890 Progress: 1592 on 5890 Progress: 1593 on 5890 Progress: 1594 on 5890 Progress: 1595 on 5890 Progress: 1596 on 5890 Progress: 1597 on 5890 Progress: 1598 on 5890 Progress: 1599 on 5890 Progress: 1600 on 5890 Progress: 1601 on 5890 Progress: 1602 on 5890 Progress: 1603 on 5890 Progress: 1604 on 5890 Progress: 1605 on 5890 Progress: 1606 on 5890 Progress: 1607 on 5890 Progress: 1608 on 5890 Progress: 1609 on 5890 Progress: 1610 on 5890 Progress: 1611 on 5890 Progress: 1612 on 5890 Progress: 1613 on 5890 Progress: 1614 on 5890 Progress: 1615 on 5890 Progress: 1616 on 5890 Progress: 1617 on 5890 Progress: 1618 on 5890 Progress: 1619 on 5890 Progress: 1620 on 5890 Progress: 1621 on 5890 Progress: 1622 on 5890 Progress: 1623 on 5890 Progress: 1624 on 5890 Progress: 1625 on 5890 Progress: 1626 on 5890 Progress: 1627 on 5890 Progress: 1628 on 5890 Progress: 1629 on 5890 Progress: 1630 on 5890 Progress: 1631 on 5890 Progress: 1632 on 5890 Progress: 1633 on 5890 Progress: 1634 on 5890 Progress: 1635 on 5890 Progress: 1636 on 5890 Progress: 1637 on 5890 Progress: 1638 on 5890 Progress: 1639 on 5890 Progress: 1640 on 5890 Progress: 1641 on 5890 Progress: 1642 on 5890 Progress: 1643 on 5890 Progress: 1644 on 5890 Progress: 1645 on 5890 Progress: 1646 on 5890 Progress: 1647 on 5890 Progress: 1648 on 5890 Progress: 1649 on 5890 Progress: 1650 on 5890 Progress: 1651 on 5890 Progress: 1652 on 5890 Progress: 1653 on 5890 Progress: 1654 on 5890 Progress: 1655 on 5890 Progress: 1656 on 5890 Progress: 1657 on 5890 Progress: 1658 on 5890 Progress: 1659 on 5890 Progress: 1660 on 5890 Progress: 1661 on 5890 Progress: 1662 on 5890 Progress: 1663 on 5890 Progress: 1664 on 5890 Progress: 1665 on 5890 Progress: 1666 on 5890 Progress: 1667 on 5890 Progress: 1668 on 5890 Progress: 1669 on 5890 Progress: 1670 on 5890 Progress: 1671 on 5890 Progress: 1672 on 5890 Progress: 1673 on 5890 Progress: 1674 on 5890 Progress: 1675 on 5890 Progress: 1676 on 5890 Progress: 1677 on 5890 Progress: 1678 on 5890 Progress: 1679 on 5890 Progress: 1680 on 5890 Progress: 1681 on 5890 Progress: 1682 on 5890 Progress: 1683 on 5890 Progress: 1684 on 5890 Progress: 1685 on 5890 Progress: 1686 on 5890 Progress: 1687 on 5890 Progress: 1688 on 5890 Progress: 1689 on 5890 Progress: 1690 on 5890 Progress: 1691 on 5890 Progress: 1692 on 5890 Progress: 1693 on 5890 Progress: 1694 on 5890 Progress: 1695 on 5890 Progress: 1696 on 5890 Progress: 1697 on 5890 Progress: 1698 on 5890 Progress: 1699 on 5890 Progress: 1700 on 5890 Progress: 1701 on 5890 Progress: 1702 on 5890 Progress: 1703 on 5890 Progress: 1704 on 5890 Progress: 1705 on 5890 Progress: 1706 on 5890 Progress: 1707 on 5890 Progress: 1708 on 5890 Progress: 1709 on 5890 Progress: 1710 on 5890 Progress: 1711 on 5890 Progress: 1712 on 5890 Progress: 1713 on 5890 Progress: 1714 on 5890 Progress: 1715 on 5890 Progress: 1716 on 5890 Progress: 1717 on 5890 Progress: 1718 on 5890 Progress: 1719 on 5890 Progress: 1720 on 5890 Progress: 1721 on 5890 Progress: 1722 on 5890 Progress: 1723 on 5890 Progress: 1724 on 5890 Progress: 1725 on 5890 Progress: 1726 on 5890 Progress: 1727 on 5890 Progress: 1728 on 5890 Progress: 1729 on 5890 Progress: 1730 on 5890 Progress: 1731 on 5890 Progress: 1732 on 5890 Progress: 1733 on 5890 Progress: 1734 on 5890 Progress: 1735 on 5890 Progress: 1736 on 5890 Progress: 1737 on 5890 Progress: 1738 on 5890 Progress: 1739 on 5890 Progress: 1740 on 5890 Progress: 1741 on 5890 Progress: 1742 on 5890 Progress: 1743 on 5890 Progress: 1744 on 5890 Progress: 1745 on 5890 Progress: 1746 on 5890 Progress: 1747 on 5890 Progress: 1748 on 5890 Progress: 1749 on 5890 Progress: 1750 on 5890 Progress: 1751 on 5890 Progress: 1752 on 5890 Progress: 1753 on 5890 Progress: 1754 on 5890 Progress: 1755 on 5890 Progress: 1756 on 5890 Progress: 1757 on 5890 Progress: 1758 on 5890 Progress: 1759 on 5890 Progress: 1760 on 5890 Progress: 1761 on 5890 Progress: 1762 on 5890 Progress: 1763 on 5890 Progress: 1764 on 5890 Progress: 1765 on 5890 Progress: 1766 on 5890 Progress: 1767 on 5890 Progress: 1768 on 5890 Progress: 1769 on 5890 Progress: 1770 on 5890 Progress: 1771 on 5890 Progress: 1772 on 5890 Progress: 1773 on 5890 Progress: 1774 on 5890 Progress: 1775 on 5890 Progress: 1776 on 5890 Progress: 1777 on 5890 Progress: 1778 on 5890 Progress: 1779 on 5890 Progress: 1780 on 5890 Progress: 1781 on 5890 Progress: 1782 on 5890 Progress: 1783 on 5890 Progress: 1784 on 5890 Progress: 1785 on 5890 Progress: 1786 on 5890 Progress: 1787 on 5890 Progress: 1788 on 5890 Progress: 1789 on 5890 Progress: 1790 on 5890 Progress: 1791 on 5890 Progress: 1792 on 5890 Progress: 1793 on 5890 Progress: 1794 on 5890 Progress: 1795 on 5890 Progress: 1796 on 5890 Progress: 1797 on 5890 Progress: 1798 on 5890 Progress: 1799 on 5890 Progress: 1800 on 5890 Progress: 1801 on 5890 Progress: 1802 on 5890 Progress: 1803 on 5890 Progress: 1804 on 5890 Progress: 1805 on 5890 Progress: 1806 on 5890 Progress: 1807 on 5890 Progress: 1808 on 5890 Progress: 1809 on 5890 Progress: 1810 on 5890 Progress: 1811 on 5890 Progress: 1812 on 5890 Progress: 1813 on 5890 Progress: 1814 on 5890 Progress: 1815 on 5890 Progress: 1816 on 5890 Progress: 1817 on 5890 Progress: 1818 on 5890 Progress: 1819 on 5890 Progress: 1820 on 5890 Progress: 1821 on 5890 Progress: 1822 on 5890 Progress: 1823 on 5890 Progress: 1824 on 5890 Progress: 1825 on 5890 Progress: 1826 on 5890 Progress: 1827 on 5890 Progress: 1828 on 5890 Progress: 1829 on 5890 Progress: 1830 on 5890 Progress: 1831 on 5890 Progress: 1832 on 5890 Progress: 1833 on 5890 Progress: 1834 on 5890 Progress: 1835 on 5890 Progress: 1836 on 5890 Progress: 1837 on 5890 Progress: 1838 on 5890 Progress: 1839 on 5890 Progress: 1840 on 5890 Progress: 1841 on 5890 Progress: 1842 on 5890 Progress: 1843 on 5890 Progress: 1844 on 5890 Progress: 1845 on 5890 Progress: 1846 on 5890 Progress: 1847 on 5890 Progress: 1848 on 5890 Progress: 1849 on 5890 Progress: 1850 on 5890 Progress: 1851 on 5890 Progress: 1852 on 5890 Progress: 1853 on 5890 Progress: 1854 on 5890 Progress: 1855 on 5890 Progress: 1856 on 5890 Progress: 1857 on 5890 Progress: 1858 on 5890 Progress: 1859 on 5890 Progress: 1860 on 5890 Progress: 1861 on 5890 Progress: 1862 on 5890 Progress: 1863 on 5890 Progress: 1864 on 5890 Progress: 1865 on 5890 Progress: 1866 on 5890 Progress: 1867 on 5890 Progress: 1868 on 5890 Progress: 1869 on 5890 Progress: 1870 on 5890 Progress: 1871 on 5890 Progress: 1872 on 5890 Progress: 1873 on 5890 Progress: 1874 on 5890 Progress: 1875 on 5890 Progress: 1876 on 5890 Progress: 1877 on 5890 Progress: 1878 on 5890 Progress: 1879 on 5890 Progress: 1880 on 5890 Progress: 1881 on 5890 Progress: 1882 on 5890 Progress: 1883 on 5890 Progress: 1884 on 5890 Progress: 1885 on 5890 Progress: 1886 on 5890 Progress: 1887 on 5890 Progress: 1888 on 5890 Progress: 1889 on 5890 Progress: 1890 on 5890 Progress: 1891 on 5890 Progress: 1892 on 5890 Progress: 1893 on 5890 Progress: 1894 on 5890 Progress: 1895 on 5890 Progress: 1896 on 5890 Progress: 1897 on 5890 Progress: 1898 on 5890 Progress: 1899 on 5890 Progress: 1900 on 5890 Progress: 1901 on 5890 Progress: 1902 on 5890 Progress: 1903 on 5890 Progress: 1904 on 5890 Progress: 1905 on 5890 Progress: 1906 on 5890 Progress: 1907 on 5890 Progress: 1908 on 5890 Progress: 1909 on 5890 Progress: 1910 on 5890 Progress: 1911 on 5890 Progress: 1912 on 5890 Progress: 1913 on 5890 Progress: 1914 on 5890 Progress: 1915 on 5890 Progress: 1916 on 5890 Progress: 1917 on 5890 Progress: 1918 on 5890 Progress: 1919 on 5890 Progress: 1920 on 5890 Progress: 1921 on 5890 Progress: 1922 on 5890 Progress: 1923 on 5890 Progress: 1924 on 5890 Progress: 1925 on 5890 Progress: 1926 on 5890 Progress: 1927 on 5890 Progress: 1928 on 5890 Progress: 1929 on 5890 Progress: 1930 on 5890 Progress: 1931 on 5890 Progress: 1932 on 5890 Progress: 1933 on 5890 Progress: 1934 on 5890 Progress: 1935 on 5890 Progress: 1936 on 5890 Progress: 1937 on 5890 Progress: 1938 on 5890 Progress: 1939 on 5890 Progress: 1940 on 5890 Progress: 1941 on 5890 Progress: 1942 on 5890 Progress: 1943 on 5890 Progress: 1944 on 5890 Progress: 1945 on 5890 Progress: 1946 on 5890 Progress: 1947 on 5890 Progress: 1948 on 5890 Progress: 1949 on 5890 Progress: 1950 on 5890 Progress: 1951 on 5890 Progress: 1952 on 5890 Progress: 1953 on 5890 Progress: 1954 on 5890 Progress: 1955 on 5890 Progress: 1956 on 5890 Progress: 1957 on 5890 Progress: 1958 on 5890 Progress: 1959 on 5890 Progress: 1960 on 5890 Progress: 1961 on 5890 Progress: 1962 on 5890 Progress: 1963 on 5890 Progress: 1964 on 5890 Progress: 1965 on 5890 Progress: 1966 on 5890 Progress: 1967 on 5890 Progress: 1968 on 5890 Progress: 1969 on 5890 Progress: 1970 on 5890 Progress: 1971 on 5890 Progress: 1972 on 5890 Progress: 1973 on 5890 Progress: 1974 on 5890 Progress: 1975 on 5890 Progress: 1976 on 5890 Progress: 1977 on 5890 Progress: 1978 on 5890 Progress: 1979 on 5890 Progress: 1980 on 5890 Progress: 1981 on 5890 Progress: 1982 on 5890 Progress: 1983 on 5890 Progress: 1984 on 5890 Progress: 1985 on 5890 Progress: 1986 on 5890 Progress: 1987 on 5890 Progress: 1988 on 5890 Progress: 1989 on 5890 Progress: 1990 on 5890 Progress: 1991 on 5890 Progress: 1992 on 5890 Progress: 1993 on 5890 Progress: 1994 on 5890 Progress: 1995 on 5890 Progress: 1996 on 5890 Progress: 1997 on 5890 Progress: 1998 on 5890 Progress: 1999 on 5890 Progress: 2000 on 5890 Progress: 2001 on 5890 Progress: 2002 on 5890 Progress: 2003 on 5890 Progress: 2004 on 5890 Progress: 2005 on 5890 Progress: 2006 on 5890 Progress: 2007 on 5890 Progress: 2008 on 5890 Progress: 2009 on 5890 Progress: 2010 on 5890 Progress: 2011 on 5890 Progress: 2012 on 5890 Progress: 2013 on 5890 Progress: 2014 on 5890 Progress: 2015 on 5890 Progress: 2016 on 5890 Progress: 2017 on 5890 Progress: 2018 on 5890 Progress: 2019 on 5890 Progress: 2020 on 5890 Progress: 2021 on 5890 Progress: 2022 on 5890 Progress: 2023 on 5890 Progress: 2024 on 5890 Progress: 2025 on 5890 Progress: 2026 on 5890 Progress: 2027 on 5890 Progress: 2028 on 5890 Progress: 2029 on 5890 Progress: 2030 on 5890 Progress: 2031 on 5890 Progress: 2032 on 5890 Progress: 2033 on 5890 Progress: 2034 on 5890 Progress: 2035 on 5890 Progress: 2036 on 5890 Progress: 2037 on 5890 Progress: 2038 on 5890 Progress: 2039 on 5890 Progress: 2040 on 5890 Progress: 2041 on 5890 Progress: 2042 on 5890 Progress: 2043 on 5890 Progress: 2044 on 5890 Progress: 2045 on 5890 Progress: 2046 on 5890 Progress: 2047 on 5890 Progress: 2048 on 5890 Progress: 2049 on 5890 Progress: 2050 on 5890 Progress: 2051 on 5890 Progress: 2052 on 5890 Progress: 2053 on 5890 Progress: 2054 on 5890 Progress: 2055 on 5890 Progress: 2056 on 5890 Progress: 2057 on 5890 Progress: 2058 on 5890 Progress: 2059 on 5890 Progress: 2060 on 5890 Progress: 2061 on 5890 Progress: 2062 on 5890 Progress: 2063 on 5890 Progress: 2064 on 5890 Progress: 2065 on 5890 Progress: 2066 on 5890 Progress: 2067 on 5890 Progress: 2068 on 5890 Progress: 2069 on 5890 Progress: 2070 on 5890 Progress: 2071 on 5890 Progress: 2072 on 5890 Progress: 2073 on 5890 Progress: 2074 on 5890 Progress: 2075 on 5890 Progress: 2076 on 5890 Progress: 2077 on 5890 Progress: 2078 on 5890 Progress: 2079 on 5890 Progress: 2080 on 5890 Progress: 2081 on 5890 Progress: 2082 on 5890 Progress: 2083 on 5890 Progress: 2084 on 5890 Progress: 2085 on 5890 Progress: 2086 on 5890 Progress: 2087 on 5890 Progress: 2088 on 5890 Progress: 2089 on 5890 Progress: 2090 on 5890 Progress: 2091 on 5890 Progress: 2092 on 5890 Progress: 2093 on 5890 Progress: 2094 on 5890 Progress: 2095 on 5890 Progress: 2096 on 5890 Progress: 2097 on 5890 Progress: 2098 on 5890 Progress: 2099 on 5890 Progress: 2100 on 5890 Progress: 2101 on 5890 Progress: 2102 on 5890 Progress: 2103 on 5890 Progress: 2104 on 5890 Progress: 2105 on 5890 Progress: 2106 on 5890 Progress: 2107 on 5890 Progress: 2108 on 5890 Progress: 2109 on 5890 Progress: 2110 on 5890 Progress: 2111 on 5890 Progress: 2112 on 5890 Progress: 2113 on 5890 Progress: 2114 on 5890 Progress: 2115 on 5890 Progress: 2116 on 5890 Progress: 2117 on 5890 Progress: 2118 on 5890 Progress: 2119 on 5890 Progress: 2120 on 5890 Progress: 2121 on 5890 Progress: 2122 on 5890 Progress: 2123 on 5890 Progress: 2124 on 5890 Progress: 2125 on 5890 Progress: 2126 on 5890 Progress: 2127 on 5890 Progress: 2128 on 5890 Progress: 2129 on 5890 Progress: 2130 on 5890 Progress: 2131 on 5890 Progress: 2132 on 5890 Progress: 2133 on 5890 Progress: 2134 on 5890 Progress: 2135 on 5890 Progress: 2136 on 5890 Progress: 2137 on 5890 Progress: 2138 on 5890 Progress: 2139 on 5890 Progress: 2140 on 5890 Progress: 2141 on 5890 Progress: 2142 on 5890 Progress: 2143 on 5890 Progress: 2144 on 5890 Progress: 2145 on 5890 Progress: 2146 on 5890 Progress: 2147 on 5890 Progress: 2148 on 5890 Progress: 2149 on 5890 Progress: 2150 on 5890 Progress: 2151 on 5890 Progress: 2152 on 5890 Progress: 2153 on 5890 Progress: 2154 on 5890 Progress: 2155 on 5890 Progress: 2156 on 5890 Progress: 2157 on 5890 Progress: 2158 on 5890 Progress: 2159 on 5890 Progress: 2160 on 5890 Progress: 2161 on 5890 Progress: 2162 on 5890 Progress: 2163 on 5890 Progress: 2164 on 5890 Progress: 2165 on 5890 Progress: 2166 on 5890 Progress: 2167 on 5890 Progress: 2168 on 5890 Progress: 2169 on 5890 Progress: 2170 on 5890 Progress: 2171 on 5890 Progress: 2172 on 5890 Progress: 2173 on 5890 Progress: 2174 on 5890 Progress: 2175 on 5890 Progress: 2176 on 5890 Progress: 2177 on 5890 Progress: 2178 on 5890 Progress: 2179 on 5890 Progress: 2180 on 5890 Progress: 2181 on 5890 Progress: 2182 on 5890 Progress: 2183 on 5890 Progress: 2184 on 5890 Progress: 2185 on 5890 Progress: 2186 on 5890 Progress: 2187 on 5890 Progress: 2188 on 5890 Progress: 2189 on 5890 Progress: 2190 on 5890 Progress: 2191 on 5890 Progress: 2192 on 5890 Progress: 2193 on 5890 Progress: 2194 on 5890 Progress: 2195 on 5890 Progress: 2196 on 5890 Progress: 2197 on 5890 Progress: 2198 on 5890 Progress: 2199 on 5890 Progress: 2200 on 5890 Progress: 2201 on 5890 Progress: 2202 on 5890 Progress: 2203 on 5890 Progress: 2204 on 5890 Progress: 2205 on 5890 Progress: 2206 on 5890 Progress: 2207 on 5890 Progress: 2208 on 5890 Progress: 2209 on 5890 Progress: 2210 on 5890 Progress: 2211 on 5890 Progress: 2212 on 5890 Progress: 2213 on 5890 Progress: 2214 on 5890 Progress: 2215 on 5890 Progress: 2216 on 5890 Progress: 2217 on 5890 Progress: 2218 on 5890 Progress: 2219 on 5890 Progress: 2220 on 5890 Progress: 2221 on 5890 Progress: 2222 on 5890 Progress: 2223 on 5890 Progress: 2224 on 5890 Progress: 2225 on 5890 Progress: 2226 on 5890 Progress: 2227 on 5890 Progress: 2228 on 5890 Progress: 2229 on 5890 Progress: 2230 on 5890 Progress: 2231 on 5890 Progress: 2232 on 5890 Progress: 2233 on 5890 Progress: 2234 on 5890 Progress: 2235 on 5890 Progress: 2236 on 5890 Progress: 2237 on 5890 Progress: 2238 on 5890 Progress: 2239 on 5890 Progress: 2240 on 5890 Progress: 2241 on 5890 Progress: 2242 on 5890 Progress: 2243 on 5890 Progress: 2244 on 5890 Progress: 2245 on 5890 Progress: 2246 on 5890 Progress: 2247 on 5890 Progress: 2248 on 5890 Progress: 2249 on 5890 Progress: 2250 on 5890 Progress: 2251 on 5890 Progress: 2252 on 5890 Progress: 2253 on 5890 Progress: 2254 on 5890 Progress: 2255 on 5890 Progress: 2256 on 5890 Progress: 2257 on 5890 Progress: 2258 on 5890 Progress: 2259 on 5890 Progress: 2260 on 5890 Progress: 2261 on 5890 Progress: 2262 on 5890 Progress: 2263 on 5890 Progress: 2264 on 5890 Progress: 2265 on 5890 Progress: 2266 on 5890 Progress: 2267 on 5890 Progress: 2268 on 5890 Progress: 2269 on 5890 Progress: 2270 on 5890 Progress: 2271 on 5890 Progress: 2272 on 5890 Progress: 2273 on 5890 Progress: 2274 on 5890 Progress: 2275 on 5890 Progress: 2276 on 5890 Progress: 2277 on 5890 Progress: 2278 on 5890 Progress: 2279 on 5890 Progress: 2280 on 5890 Progress: 2281 on 5890 Progress: 2282 on 5890 Progress: 2283 on 5890 Progress: 2284 on 5890 Progress: 2285 on 5890 Progress: 2286 on 5890 Progress: 2287 on 5890 Progress: 2288 on 5890 Progress: 2289 on 5890 Progress: 2290 on 5890 Progress: 2291 on 5890 Progress: 2292 on 5890 Progress: 2293 on 5890 Progress: 2294 on 5890 Progress: 2295 on 5890 Progress: 2296 on 5890 Progress: 2297 on 5890 Progress: 2298 on 5890 Progress: 2299 on 5890 Progress: 2300 on 5890 Progress: 2301 on 5890 Progress: 2302 on 5890 Progress: 2303 on 5890 Progress: 2304 on 5890 Progress: 2305 on 5890 Progress: 2306 on 5890 Progress: 2307 on 5890 Progress: 2308 on 5890 Progress: 2309 on 5890 Progress: 2310 on 5890 Progress: 2311 on 5890 Progress: 2312 on 5890 Progress: 2313 on 5890 Progress: 2314 on 5890 Progress: 2315 on 5890 Progress: 2316 on 5890 Progress: 2317 on 5890 Progress: 2318 on 5890 Progress: 2319 on 5890 Progress: 2320 on 5890 Progress: 2321 on 5890 Progress: 2322 on 5890 Progress: 2323 on 5890 Progress: 2324 on 5890 Progress: 2325 on 5890 Progress: 2326 on 5890 Progress: 2327 on 5890 Progress: 2328 on 5890 Progress: 2329 on 5890 Progress: 2330 on 5890 Progress: 2331 on 5890 Progress: 2332 on 5890 Progress: 2333 on 5890 Progress: 2334 on 5890 Progress: 2335 on 5890 Progress: 2336 on 5890 Progress: 2337 on 5890 Progress: 2338 on 5890 Progress: 2339 on 5890 Progress: 2340 on 5890 Progress: 2341 on 5890 Progress: 2342 on 5890 Progress: 2343 on 5890 Progress: 2344 on 5890 Progress: 2345 on 5890 Progress: 2346 on 5890 Progress: 2347 on 5890 Progress: 2348 on 5890 Progress: 2349 on 5890 Progress: 2350 on 5890 Progress: 2351 on 5890 Progress: 2352 on 5890 Progress: 2353 on 5890 Progress: 2354 on 5890 Progress: 2355 on 5890 Progress: 2356 on 5890 Progress: 2357 on 5890 Progress: 2358 on 5890 Progress: 2359 on 5890 Progress: 2360 on 5890 Progress: 2361 on 5890 Progress: 2362 on 5890 Progress: 2363 on 5890 Progress: 2364 on 5890 Progress: 2365 on 5890 Progress: 2366 on 5890 Progress: 2367 on 5890 Progress: 2368 on 5890 Progress: 2369 on 5890 Progress: 2370 on 5890 Progress: 2371 on 5890 Progress: 2372 on 5890 Progress: 2373 on 5890 Progress: 2374 on 5890 Progress: 2375 on 5890 Progress: 2376 on 5890 Progress: 2377 on 5890 Progress: 2378 on 5890 Progress: 2379 on 5890 Progress: 2380 on 5890 Progress: 2381 on 5890 Progress: 2382 on 5890 Progress: 2383 on 5890 Progress: 2384 on 5890 Progress: 2385 on 5890 Progress: 2386 on 5890 Progress: 2387 on 5890 Progress: 2388 on 5890 Progress: 2389 on 5890 Progress: 2390 on 5890 Progress: 2391 on 5890 Progress: 2392 on 5890 Progress: 2393 on 5890 Progress: 2394 on 5890 Progress: 2395 on 5890 Progress: 2396 on 5890 Progress: 2397 on 5890 Progress: 2398 on 5890 Progress: 2399 on 5890 Progress: 2400 on 5890 Progress: 2401 on 5890 Progress: 2402 on 5890 Progress: 2403 on 5890 Progress: 2404 on 5890 Progress: 2405 on 5890 Progress: 2406 on 5890 Progress: 2407 on 5890 Progress: 2408 on 5890 Progress: 2409 on 5890 Progress: 2410 on 5890 Progress: 2411 on 5890 Progress: 2412 on 5890 Progress: 2413 on 5890 Progress: 2414 on 5890 Progress: 2415 on 5890 Progress: 2416 on 5890 Progress: 2417 on 5890 Progress: 2418 on 5890 Progress: 2419 on 5890 Progress: 2420 on 5890 Progress: 2421 on 5890 Progress: 2422 on 5890 Progress: 2423 on 5890 Progress: 2424 on 5890 Progress: 2425 on 5890 Progress: 2426 on 5890 Progress: 2427 on 5890 Progress: 2428 on 5890 Progress: 2429 on 5890 Progress: 2430 on 5890 Progress: 2431 on 5890 Progress: 2432 on 5890 Progress: 2433 on 5890 Progress: 2434 on 5890 Progress: 2435 on 5890 Progress: 2436 on 5890 Progress: 2437 on 5890 Progress: 2438 on 5890 Progress: 2439 on 5890 Progress: 2440 on 5890 Progress: 2441 on 5890 Progress: 2442 on 5890 Progress: 2443 on 5890 Progress: 2444 on 5890 Progress: 2445 on 5890 Progress: 2446 on 5890 Progress: 2447 on 5890 Progress: 2448 on 5890 Progress: 2449 on 5890 Progress: 2450 on 5890 Progress: 2451 on 5890 Progress: 2452 on 5890 Progress: 2453 on 5890 Progress: 2454 on 5890 Progress: 2455 on 5890 Progress: 2456 on 5890 Progress: 2457 on 5890 Progress: 2458 on 5890 Progress: 2459 on 5890 Progress: 2460 on 5890 Progress: 2461 on 5890 Progress: 2462 on 5890 Progress: 2463 on 5890 Progress: 2464 on 5890 Progress: 2465 on 5890 Progress: 2466 on 5890 Progress: 2467 on 5890 Progress: 2468 on 5890 Progress: 2469 on 5890 Progress: 2470 on 5890 Progress: 2471 on 5890 Progress: 2472 on 5890 Progress: 2473 on 5890 Progress: 2474 on 5890 Progress: 2475 on 5890 Progress: 2476 on 5890 Progress: 2477 on 5890 Progress: 2478 on 5890 Progress: 2479 on 5890 Progress: 2480 on 5890 Progress: 2481 on 5890 Progress: 2482 on 5890 Progress: 2483 on 5890 Progress: 2484 on 5890 Progress: 2485 on 5890 Progress: 2486 on 5890 Progress: 2487 on 5890 Progress: 2488 on 5890 Progress: 2489 on 5890 Progress: 2490 on 5890 Progress: 2491 on 5890 Progress: 2492 on 5890 Progress: 2493 on 5890 Progress: 2494 on 5890 Progress: 2495 on 5890 Progress: 2496 on 5890 Progress: 2497 on 5890 Progress: 2498 on 5890 Progress: 2499 on 5890 Progress: 2500 on 5890 Progress: 2501 on 5890 Progress: 2502 on 5890 Progress: 2503 on 5890 Progress: 2504 on 5890 Progress: 2505 on 5890 Progress: 2506 on 5890 Progress: 2507 on 5890 Progress: 2508 on 5890 Progress: 2509 on 5890 Progress: 2510 on 5890 Progress: 2511 on 5890 Progress: 2512 on 5890 Progress: 2513 on 5890 Progress: 2514 on 5890 Progress: 2515 on 5890 Progress: 2516 on 5890 Progress: 2517 on 5890 Progress: 2518 on 5890 Progress: 2519 on 5890 Progress: 2520 on 5890 Progress: 2521 on 5890 Progress: 2522 on 5890 Progress: 2523 on 5890 Progress: 2524 on 5890 Progress: 2525 on 5890 Progress: 2526 on 5890 Progress: 2527 on 5890 Progress: 2528 on 5890 Progress: 2529 on 5890 Progress: 2530 on 5890 Progress: 2531 on 5890 Progress: 2532 on 5890 Progress: 2533 on 5890 Progress: 2534 on 5890 Progress: 2535 on 5890 Progress: 2536 on 5890 Progress: 2537 on 5890 Progress: 2538 on 5890 Progress: 2539 on 5890 Progress: 2540 on 5890 Progress: 2541 on 5890 Progress: 2542 on 5890 Progress: 2543 on 5890 Progress: 2544 on 5890 Progress: 2545 on 5890 Progress: 2546 on 5890 Progress: 2547 on 5890 Progress: 2548 on 5890 Progress: 2549 on 5890 Progress: 2550 on 5890 Progress: 2551 on 5890 Progress: 2552 on 5890 Progress: 2553 on 5890 Progress: 2554 on 5890 Progress: 2555 on 5890 Progress: 2556 on 5890 Progress: 2557 on 5890 Progress: 2558 on 5890 Progress: 2559 on 5890 Progress: 2560 on 5890 Progress: 2561 on 5890 Progress: 2562 on 5890 Progress: 2563 on 5890 Progress: 2564 on 5890 Progress: 2565 on 5890 Progress: 2566 on 5890 Progress: 2567 on 5890 Progress: 2568 on 5890 Progress: 2569 on 5890 Progress: 2570 on 5890 Progress: 2571 on 5890 Progress: 2572 on 5890 Progress: 2573 on 5890 Progress: 2574 on 5890 Progress: 2575 on 5890 Progress: 2576 on 5890 Progress: 2577 on 5890 Progress: 2578 on 5890 Progress: 2579 on 5890 Progress: 2580 on 5890 Progress: 2581 on 5890 Progress: 2582 on 5890 Progress: 2583 on 5890 Progress: 2584 on 5890 Progress: 2585 on 5890 Progress: 2586 on 5890 Progress: 2587 on 5890 Progress: 2588 on 5890 Progress: 2589 on 5890 Progress: 2590 on 5890 Progress: 2591 on 5890 Progress: 2592 on 5890 Progress: 2593 on 5890 Progress: 2594 on 5890 Progress: 2595 on 5890 Progress: 2596 on 5890 Progress: 2597 on 5890 Progress: 2598 on 5890 Progress: 2599 on 5890 Progress: 2600 on 5890 Progress: 2601 on 5890 Progress: 2602 on 5890 Progress: 2603 on 5890 Progress: 2604 on 5890 Progress: 2605 on 5890 Progress: 2606 on 5890 Progress: 2607 on 5890 Progress: 2608 on 5890 Progress: 2609 on 5890 Progress: 2610 on 5890 Progress: 2611 on 5890 Progress: 2612 on 5890 Progress: 2613 on 5890 Progress: 2614 on 5890 Progress: 2615 on 5890 Progress: 2616 on 5890 Progress: 2617 on 5890 Progress: 2618 on 5890 Progress: 2619 on 5890 Progress: 2620 on 5890 Progress: 2621 on 5890 Progress: 2622 on 5890 Progress: 2623 on 5890 Progress: 2624 on 5890 Progress: 2625 on 5890 Progress: 2626 on 5890 Progress: 2627 on 5890 Progress: 2628 on 5890 Progress: 2629 on 5890 Progress: 2630 on 5890 Progress: 2631 on 5890 Progress: 2632 on 5890 Progress: 2633 on 5890 Progress: 2634 on 5890 Progress: 2635 on 5890 Progress: 2636 on 5890 Progress: 2637 on 5890 Progress: 2638 on 5890 Progress: 2639 on 5890 Progress: 2640 on 5890 Progress: 2641 on 5890 Progress: 2642 on 5890 Progress: 2643 on 5890 Progress: 2644 on 5890 Progress: 2645 on 5890 Progress: 2646 on 5890 Progress: 2647 on 5890 Progress: 2648 on 5890 Progress: 2649 on 5890 Progress: 2650 on 5890 Progress: 2651 on 5890 Progress: 2652 on 5890 Progress: 2653 on 5890 Progress: 2654 on 5890 Progress: 2655 on 5890 Progress: 2656 on 5890 Progress: 2657 on 5890 Progress: 2658 on 5890 Progress: 2659 on 5890 Progress: 2660 on 5890 Progress: 2661 on 5890 Progress: 2662 on 5890 Progress: 2663 on 5890 Progress: 2664 on 5890 Progress: 2665 on 5890 Progress: 2666 on 5890 Progress: 2667 on 5890 Progress: 2668 on 5890 Progress: 2669 on 5890 Progress: 2670 on 5890 Progress: 2671 on 5890 Progress: 2672 on 5890 Progress: 2673 on 5890 Progress: 2674 on 5890 Progress: 2675 on 5890 Progress: 2676 on 5890 Progress: 2677 on 5890 Progress: 2678 on 5890 Progress: 2679 on 5890 Progress: 2680 on 5890 Progress: 2681 on 5890 Progress: 2682 on 5890 Progress: 2683 on 5890 Progress: 2684 on 5890 Progress: 2685 on 5890 Progress: 2686 on 5890 Progress: 2687 on 5890 Progress: 2688 on 5890 Progress: 2689 on 5890 Progress: 2690 on 5890 Progress: 2691 on 5890 Progress: 2692 on 5890 Progress: 2693 on 5890 Progress: 2694 on 5890 Progress: 2695 on 5890 Progress: 2696 on 5890 Progress: 2697 on 5890 Progress: 2698 on 5890 Progress: 2699 on 5890 Progress: 2700 on 5890 Progress: 2701 on 5890 Progress: 2702 on 5890 Progress: 2703 on 5890 Progress: 2704 on 5890 Progress: 2705 on 5890 Progress: 2706 on 5890 Progress: 2707 on 5890 Progress: 2708 on 5890 Progress: 2709 on 5890 Progress: 2710 on 5890 Progress: 2711 on 5890 Progress: 2712 on 5890 Progress: 2713 on 5890 Progress: 2714 on 5890 Progress: 2715 on 5890 Progress: 2716 on 5890 Progress: 2717 on 5890 Progress: 2718 on 5890 Progress: 2719 on 5890 Progress: 2720 on 5890 Progress: 2721 on 5890 Progress: 2722 on 5890 Progress: 2723 on 5890 Progress: 2724 on 5890 Progress: 2725 on 5890 Progress: 2726 on 5890 Progress: 2727 on 5890 Progress: 2728 on 5890 Progress: 2729 on 5890 Progress: 2730 on 5890 Progress: 2731 on 5890 Progress: 2732 on 5890 Progress: 2733 on 5890 Progress: 2734 on 5890 Progress: 2735 on 5890 Progress: 2736 on 5890 Progress: 2737 on 5890 Progress: 2738 on 5890 Progress: 2739 on 5890 Progress: 2740 on 5890 Progress: 2741 on 5890 Progress: 2742 on 5890 Progress: 2743 on 5890 Progress: 2744 on 5890 Progress: 2745 on 5890 Progress: 2746 on 5890 Progress: 2747 on 5890 Progress: 2748 on 5890 Progress: 2749 on 5890 Progress: 2750 on 5890 Progress: 2751 on 5890 Progress: 2752 on 5890 Progress: 2753 on 5890 Progress: 2754 on 5890 Progress: 2755 on 5890 Progress: 2756 on 5890 Progress: 2757 on 5890 Progress: 2758 on 5890 Progress: 2759 on 5890 Progress: 2760 on 5890 Progress: 2761 on 5890 Progress: 2762 on 5890 Progress: 2763 on 5890 Progress: 2764 on 5890 Progress: 2765 on 5890 Progress: 2766 on 5890 Progress: 2767 on 5890 Progress: 2768 on 5890 Progress: 2769 on 5890 Progress: 2770 on 5890 Progress: 2771 on 5890 Progress: 2772 on 5890 Progress: 2773 on 5890 Progress: 2774 on 5890 Progress: 2775 on 5890 Progress: 2776 on 5890 Progress: 2777 on 5890 Progress: 2778 on 5890 Progress: 2779 on 5890 Progress: 2780 on 5890 Progress: 2781 on 5890 Progress: 2782 on 5890 Progress: 2783 on 5890 Progress: 2784 on 5890 Progress: 2785 on 5890 Progress: 2786 on 5890 Progress: 2787 on 5890 Progress: 2788 on 5890 Progress: 2789 on 5890 Progress: 2790 on 5890 Progress: 2791 on 5890 Progress: 2792 on 5890 Progress: 2793 on 5890 Progress: 2794 on 5890 Progress: 2795 on 5890 Progress: 2796 on 5890 Progress: 2797 on 5890 Progress: 2798 on 5890 Progress: 2799 on 5890 Progress: 2800 on 5890 Progress: 2801 on 5890 Progress: 2802 on 5890 Progress: 2803 on 5890 Progress: 2804 on 5890 Progress: 2805 on 5890 Progress: 2806 on 5890 Progress: 2807 on 5890 Progress: 2808 on 5890 Progress: 2809 on 5890 Progress: 2810 on 5890 Progress: 2811 on 5890 Progress: 2812 on 5890 Progress: 2813 on 5890 Progress: 2814 on 5890 Progress: 2815 on 5890 Progress: 2816 on 5890 Progress: 2817 on 5890 Progress: 2818 on 5890 Progress: 2819 on 5890 Progress: 2820 on 5890 Progress: 2821 on 5890 Progress: 2822 on 5890 Progress: 2823 on 5890 Progress: 2824 on 5890 Progress: 2825 on 5890 Progress: 2826 on 5890 Progress: 2827 on 5890 Progress: 2828 on 5890 Progress: 2829 on 5890 Progress: 2830 on 5890 Progress: 2831 on 5890 Progress: 2832 on 5890 Progress: 2833 on 5890 Progress: 2834 on 5890 Progress: 2835 on 5890 Progress: 2836 on 5890 Progress: 2837 on 5890 Progress: 2838 on 5890 Progress: 2839 on 5890 Progress: 2840 on 5890 Progress: 2841 on 5890 Progress: 2842 on 5890 Progress: 2843 on 5890 Progress: 2844 on 5890 Progress: 2845 on 5890 Progress: 2846 on 5890 Progress: 2847 on 5890 Progress: 2848 on 5890 Progress: 2849 on 5890 Progress: 2850 on 5890 Progress: 2851 on 5890 Progress: 2852 on 5890 Progress: 2853 on 5890 Progress: 2854 on 5890 Progress: 2855 on 5890 Progress: 2856 on 5890 Progress: 2857 on 5890 Progress: 2858 on 5890 Progress: 2859 on 5890 Progress: 2860 on 5890 Progress: 2861 on 5890 Progress: 2862 on 5890 Progress: 2863 on 5890 Progress: 2864 on 5890 Progress: 2865 on 5890 Progress: 2866 on 5890 Progress: 2867 on 5890 Progress: 2868 on 5890 Progress: 2869 on 5890 Progress: 2870 on 5890 Progress: 2871 on 5890 Progress: 2872 on 5890 Progress: 2873 on 5890 Progress: 2874 on 5890 Progress: 2875 on 5890 Progress: 2876 on 5890 Progress: 2877 on 5890 Progress: 2878 on 5890 Progress: 2879 on 5890 Progress: 2880 on 5890 Progress: 2881 on 5890 Progress: 2882 on 5890 Progress: 2883 on 5890 Progress: 2884 on 5890 Progress: 2885 on 5890 Progress: 2886 on 5890 Progress: 2887 on 5890 Progress: 2888 on 5890 Progress: 2889 on 5890 Progress: 2890 on 5890 Progress: 2891 on 5890 Progress: 2892 on 5890 Progress: 2893 on 5890 Progress: 2894 on 5890 Progress: 2895 on 5890 Progress: 2896 on 5890 Progress: 2897 on 5890 Progress: 2898 on 5890 Progress: 2899 on 5890 Progress: 2900 on 5890 Progress: 2901 on 5890 Progress: 2902 on 5890 Progress: 2903 on 5890 Progress: 2904 on 5890 Progress: 2905 on 5890 Progress: 2906 on 5890 Progress: 2907 on 5890 Progress: 2908 on 5890 Progress: 2909 on 5890 Progress: 2910 on 5890 Progress: 2911 on 5890 Progress: 2912 on 5890 Progress: 2913 on 5890 Progress: 2914 on 5890 Progress: 2915 on 5890 Progress: 2916 on 5890 Progress: 2917 on 5890 Progress: 2918 on 5890 Progress: 2919 on 5890 Progress: 2920 on 5890 Progress: 2921 on 5890 Progress: 2922 on 5890 Progress: 2923 on 5890 Progress: 2924 on 5890 Progress: 2925 on 5890 Progress: 2926 on 5890 Progress: 2927 on 5890 Progress: 2928 on 5890 Progress: 2929 on 5890 Progress: 2930 on 5890 Progress: 2931 on 5890 Progress: 2932 on 5890 Progress: 2933 on 5890 Progress: 2934 on 5890 Progress: 2935 on 5890 Progress: 2936 on 5890 Progress: 2937 on 5890 Progress: 2938 on 5890 Progress: 2939 on 5890 Progress: 2940 on 5890 Progress: 2941 on 5890 Progress: 2942 on 5890 Progress: 2943 on 5890 Progress: 2944 on 5890 Progress: 2945 on 5890 Progress: 2946 on 5890 Progress: 2947 on 5890 Progress: 2948 on 5890 Progress: 2949 on 5890 Progress: 2950 on 5890 Progress: 2951 on 5890 Progress: 2952 on 5890 Progress: 2953 on 5890 Progress: 2954 on 5890 Progress: 2955 on 5890 Progress: 2956 on 5890 Progress: 2957 on 5890 Progress: 2958 on 5890 Progress: 2959 on 5890 Progress: 2960 on 5890 Progress: 2961 on 5890 Progress: 2962 on 5890 Progress: 2963 on 5890 Progress: 2964 on 5890 Progress: 2965 on 5890 Progress: 2966 on 5890 Progress: 2967 on 5890 Progress: 2968 on 5890 Progress: 2969 on 5890 Progress: 2970 on 5890 Progress: 2971 on 5890 Progress: 2972 on 5890 Progress: 2973 on 5890 Progress: 2974 on 5890 Progress: 2975 on 5890 Progress: 2976 on 5890 Progress: 2977 on 5890 Progress: 2978 on 5890 Progress: 2979 on 5890 Progress: 2980 on 5890 Progress: 2981 on 5890 Progress: 2982 on 5890 Progress: 2983 on 5890 Progress: 2984 on 5890 Progress: 2985 on 5890 Progress: 2986 on 5890 Progress: 2987 on 5890 Progress: 2988 on 5890 Progress: 2989 on 5890 Progress: 2990 on 5890 Progress: 2991 on 5890 Progress: 2992 on 5890 Progress: 2993 on 5890 Progress: 2994 on 5890 Progress: 2995 on 5890 Progress: 2996 on 5890 Progress: 2997 on 5890 Progress: 2998 on 5890 Progress: 2999 on 5890 Progress: 3000 on 5890 Progress: 3001 on 5890 Progress: 3002 on 5890 Progress: 3003 on 5890 Progress: 3004 on 5890 Progress: 3005 on 5890 Progress: 3006 on 5890 Progress: 3007 on 5890 Progress: 3008 on 5890 Progress: 3009 on 5890 Progress: 3010 on 5890 Progress: 3011 on 5890 Progress: 3012 on 5890 Progress: 3013 on 5890 Progress: 3014 on 5890 Progress: 3015 on 5890 Progress: 3016 on 5890 Progress: 3017 on 5890 Progress: 3018 on 5890 Progress: 3019 on 5890 Progress: 3020 on 5890 Progress: 3021 on 5890 Progress: 3022 on 5890 Progress: 3023 on 5890 Progress: 3024 on 5890 Progress: 3025 on 5890 Progress: 3026 on 5890 Progress: 3027 on 5890 Progress: 3028 on 5890 Progress: 3029 on 5890 Progress: 3030 on 5890 Progress: 3031 on 5890 Progress: 3032 on 5890 Progress: 3033 on 5890 Progress: 3034 on 5890 Progress: 3035 on 5890 Progress: 3036 on 5890 Progress: 3037 on 5890 Progress: 3038 on 5890 Progress: 3039 on 5890 Progress: 3040 on 5890 Progress: 3041 on 5890 Progress: 3042 on 5890 Progress: 3043 on 5890 Progress: 3044 on 5890 Progress: 3045 on 5890 Progress: 3046 on 5890 Progress: 3047 on 5890 Progress: 3048 on 5890 Progress: 3049 on 5890 Progress: 3050 on 5890 Progress: 3051 on 5890 Progress: 3052 on 5890 Progress: 3053 on 5890 Progress: 3054 on 5890 Progress: 3055 on 5890 Progress: 3056 on 5890 Progress: 3057 on 5890 Progress: 3058 on 5890 Progress: 3059 on 5890 Progress: 3060 on 5890 Progress: 3061 on 5890 Progress: 3062 on 5890 Progress: 3063 on 5890 Progress: 3064 on 5890 Progress: 3065 on 5890 Progress: 3066 on 5890 Progress: 3067 on 5890 Progress: 3068 on 5890 Progress: 3069 on 5890 Progress: 3070 on 5890 Progress: 3071 on 5890 Progress: 3072 on 5890 Progress: 3073 on 5890 Progress: 3074 on 5890 Progress: 3075 on 5890 Progress: 3076 on 5890 Progress: 3077 on 5890 Progress: 3078 on 5890 Progress: 3079 on 5890 Progress: 3080 on 5890 Progress: 3081 on 5890 Progress: 3082 on 5890 Progress: 3083 on 5890 Progress: 3084 on 5890 Progress: 3085 on 5890 Progress: 3086 on 5890 Progress: 3087 on 5890 Progress: 3088 on 5890 Progress: 3089 on 5890 Progress: 3090 on 5890 Progress: 3091 on 5890 Progress: 3092 on 5890 Progress: 3093 on 5890 Progress: 3094 on 5890 Progress: 3095 on 5890 Progress: 3096 on 5890 Progress: 3097 on 5890 Progress: 3098 on 5890 Progress: 3099 on 5890 Progress: 3100 on 5890 Progress: 3101 on 5890 Progress: 3102 on 5890 Progress: 3103 on 5890 Progress: 3104 on 5890 Progress: 3105 on 5890 Progress: 3106 on 5890 Progress: 3107 on 5890 Progress: 3108 on 5890 Progress: 3109 on 5890 Progress: 3110 on 5890 Progress: 3111 on 5890 Progress: 3112 on 5890 Progress: 3113 on 5890 Progress: 3114 on 5890 Progress: 3115 on 5890 Progress: 3116 on 5890 Progress: 3117 on 5890 Progress: 3118 on 5890 Progress: 3119 on 5890 Progress: 3120 on 5890 Progress: 3121 on 5890 Progress: 3122 on 5890 Progress: 3123 on 5890 Progress: 3124 on 5890 Progress: 3125 on 5890 Progress: 3126 on 5890 Progress: 3127 on 5890 Progress: 3128 on 5890 Progress: 3129 on 5890 Progress: 3130 on 5890 Progress: 3131 on 5890 Progress: 3132 on 5890 Progress: 3133 on 5890 Progress: 3134 on 5890 Progress: 3135 on 5890 Progress: 3136 on 5890 Progress: 3137 on 5890 Progress: 3138 on 5890 Progress: 3139 on 5890 Progress: 3140 on 5890 Progress: 3141 on 5890 Progress: 3142 on 5890 Progress: 3143 on 5890 Progress: 3144 on 5890 Progress: 3145 on 5890 Progress: 3146 on 5890 Progress: 3147 on 5890 Progress: 3148 on 5890 Progress: 3149 on 5890 Progress: 3150 on 5890 Progress: 3151 on 5890 Progress: 3152 on 5890 Progress: 3153 on 5890 Progress: 3154 on 5890 Progress: 3155 on 5890 Progress: 3156 on 5890 Progress: 3157 on 5890 Progress: 3158 on 5890 Progress: 3159 on 5890 Progress: 3160 on 5890 Progress: 3161 on 5890 Progress: 3162 on 5890 Progress: 3163 on 5890 Progress: 3164 on 5890 Progress: 3165 on 5890 Progress: 3166 on 5890 Progress: 3167 on 5890 Progress: 3168 on 5890 Progress: 3169 on 5890 Progress: 3170 on 5890 Progress: 3171 on 5890 Progress: 3172 on 5890 Progress: 3173 on 5890 Progress: 3174 on 5890 Progress: 3175 on 5890 Progress: 3176 on 5890 Progress: 3177 on 5890 Progress: 3178 on 5890 Progress: 3179 on 5890 Progress: 3180 on 5890 Progress: 3181 on 5890 Progress: 3182 on 5890 Progress: 3183 on 5890 Progress: 3184 on 5890 Progress: 3185 on 5890 Progress: 3186 on 5890 Progress: 3187 on 5890 Progress: 3188 on 5890 Progress: 3189 on 5890 Progress: 3190 on 5890 Progress: 3191 on 5890 Progress: 3192 on 5890 Progress: 3193 on 5890 Progress: 3194 on 5890 Progress: 3195 on 5890 Progress: 3196 on 5890 Progress: 3197 on 5890 Progress: 3198 on 5890 Progress: 3199 on 5890 Progress: 3200 on 5890 Progress: 3201 on 5890 Progress: 3202 on 5890 Progress: 3203 on 5890 Progress: 3204 on 5890 Progress: 3205 on 5890 Progress: 3206 on 5890 Progress: 3207 on 5890 Progress: 3208 on 5890 Progress: 3209 on 5890 Progress: 3210 on 5890 Progress: 3211 on 5890 Progress: 3212 on 5890 Progress: 3213 on 5890 Progress: 3214 on 5890 Progress: 3215 on 5890 Progress: 3216 on 5890 Progress: 3217 on 5890 Progress: 3218 on 5890 Progress: 3219 on 5890 Progress: 3220 on 5890 Progress: 3221 on 5890 Progress: 3222 on 5890 Progress: 3223 on 5890 Progress: 3224 on 5890 Progress: 3225 on 5890 Progress: 3226 on 5890 Progress: 3227 on 5890 Progress: 3228 on 5890 Progress: 3229 on 5890 Progress: 3230 on 5890 Progress: 3231 on 5890 Progress: 3232 on 5890 Progress: 3233 on 5890 Progress: 3234 on 5890 Progress: 3235 on 5890 Progress: 3236 on 5890 Progress: 3237 on 5890 Progress: 3238 on 5890 Progress: 3239 on 5890 Progress: 3240 on 5890 Progress: 3241 on 5890 Progress: 3242 on 5890 Progress: 3243 on 5890 Progress: 3244 on 5890 Progress: 3245 on 5890 Progress: 3246 on 5890 Progress: 3247 on 5890 Progress: 3248 on 5890 Progress: 3249 on 5890 Progress: 3250 on 5890 Progress: 3251 on 5890 Progress: 3252 on 5890 Progress: 3253 on 5890 Progress: 3254 on 5890 Progress: 3255 on 5890 Progress: 3256 on 5890 Progress: 3257 on 5890 Progress: 3258 on 5890 Progress: 3259 on 5890 Progress: 3260 on 5890 Progress: 3261 on 5890 Progress: 3262 on 5890 Progress: 3263 on 5890 Progress: 3264 on 5890 Progress: 3265 on 5890 Progress: 3266 on 5890 Progress: 3267 on 5890 Progress: 3268 on 5890 Progress: 3269 on 5890 Progress: 3270 on 5890 Progress: 3271 on 5890 Progress: 3272 on 5890 Progress: 3273 on 5890 Progress: 3274 on 5890 Progress: 3275 on 5890 Progress: 3276 on 5890 Progress: 3277 on 5890 Progress: 3278 on 5890 Progress: 3279 on 5890 Progress: 3280 on 5890 Progress: 3281 on 5890 Progress: 3282 on 5890 Progress: 3283 on 5890 Progress: 3284 on 5890 Progress: 3285 on 5890 Progress: 3286 on 5890 Progress: 3287 on 5890 Progress: 3288 on 5890 Progress: 3289 on 5890 Progress: 3290 on 5890 Progress: 3291 on 5890 Progress: 3292 on 5890 Progress: 3293 on 5890 Progress: 3294 on 5890 Progress: 3295 on 5890 Progress: 3296 on 5890 Progress: 3297 on 5890 Progress: 3298 on 5890 Progress: 3299 on 5890 Progress: 3300 on 5890 Progress: 3301 on 5890 Progress: 3302 on 5890 Progress: 3303 on 5890 Progress: 3304 on 5890 Progress: 3305 on 5890 Progress: 3306 on 5890 Progress: 3307 on 5890 Progress: 3308 on 5890 Progress: 3309 on 5890 Progress: 3310 on 5890 Progress: 3311 on 5890 Progress: 3312 on 5890 Progress: 3313 on 5890 Progress: 3314 on 5890 Progress: 3315 on 5890 Progress: 3316 on 5890 Progress: 3317 on 5890 Progress: 3318 on 5890 Progress: 3319 on 5890 Progress: 3320 on 5890 Progress: 3321 on 5890 Progress: 3322 on 5890 Progress: 3323 on 5890 Progress: 3324 on 5890 Progress: 3325 on 5890 Progress: 3326 on 5890 Progress: 3327 on 5890 Progress: 3328 on 5890 Progress: 3329 on 5890 Progress: 3330 on 5890 Progress: 3331 on 5890 Progress: 3332 on 5890 Progress: 3333 on 5890 Progress: 3334 on 5890 Progress: 3335 on 5890 Progress: 3336 on 5890 Progress: 3337 on 5890 Progress: 3338 on 5890 Progress: 3339 on 5890 Progress: 3340 on 5890 Progress: 3341 on 5890 Progress: 3342 on 5890 Progress: 3343 on 5890 Progress: 3344 on 5890 Progress: 3345 on 5890 Progress: 3346 on 5890 Progress: 3347 on 5890 Progress: 3348 on 5890 Progress: 3349 on 5890 Progress: 3350 on 5890 Progress: 3351 on 5890 Progress: 3352 on 5890 Progress: 3353 on 5890 Progress: 3354 on 5890 Progress: 3355 on 5890 Progress: 3356 on 5890 Progress: 3357 on 5890 Progress: 3358 on 5890 Progress: 3359 on 5890 Progress: 3360 on 5890 Progress: 3361 on 5890 Progress: 3362 on 5890 Progress: 3363 on 5890 Progress: 3364 on 5890 Progress: 3365 on 5890 Progress: 3366 on 5890 Progress: 3367 on 5890 Progress: 3368 on 5890 Progress: 3369 on 5890 Progress: 3370 on 5890 Progress: 3371 on 5890 Progress: 3372 on 5890 Progress: 3373 on 5890 Progress: 3374 on 5890 Progress: 3375 on 5890 Progress: 3376 on 5890 Progress: 3377 on 5890 Progress: 3378 on 5890 Progress: 3379 on 5890 Progress: 3380 on 5890 Progress: 3381 on 5890 Progress: 3382 on 5890 Progress: 3383 on 5890 Progress: 3384 on 5890 Progress: 3385 on 5890 Progress: 3386 on 5890 Progress: 3387 on 5890 Progress: 3388 on 5890 Progress: 3389 on 5890 Progress: 3390 on 5890 Progress: 3391 on 5890 Progress: 3392 on 5890 Progress: 3393 on 5890 Progress: 3394 on 5890 Progress: 3395 on 5890 Progress: 3396 on 5890 Progress: 3397 on 5890 Progress: 3398 on 5890 Progress: 3399 on 5890 Progress: 3400 on 5890 Progress: 3401 on 5890 Progress: 3402 on 5890 Progress: 3403 on 5890 Progress: 3404 on 5890 Progress: 3405 on 5890 Progress: 3406 on 5890 Progress: 3407 on 5890 Progress: 3408 on 5890 Progress: 3409 on 5890 Progress: 3410 on 5890 Progress: 3411 on 5890 Progress: 3412 on 5890 Progress: 3413 on 5890 Progress: 3414 on 5890 Progress: 3415 on 5890 Progress: 3416 on 5890 Progress: 3417 on 5890 Progress: 3418 on 5890 Progress: 3419 on 5890 Progress: 3420 on 5890 Progress: 3421 on 5890 Progress: 3422 on 5890 Progress: 3423 on 5890 Progress: 3424 on 5890 Progress: 3425 on 5890 Progress: 3426 on 5890 Progress: 3427 on 5890 Progress: 3428 on 5890 Progress: 3429 on 5890 Progress: 3430 on 5890 Progress: 3431 on 5890 Progress: 3432 on 5890 Progress: 3433 on 5890 Progress: 3434 on 5890 Progress: 3435 on 5890 Progress: 3436 on 5890 Progress: 3437 on 5890 Progress: 3438 on 5890 Progress: 3439 on 5890 Progress: 3440 on 5890 Progress: 3441 on 5890 Progress: 3442 on 5890 Progress: 3443 on 5890 Progress: 3444 on 5890 Progress: 3445 on 5890 Progress: 3446 on 5890 Progress: 3447 on 5890 Progress: 3448 on 5890 Progress: 3449 on 5890 Progress: 3450 on 5890 Progress: 3451 on 5890 Progress: 3452 on 5890 Progress: 3453 on 5890 Progress: 3454 on 5890 Progress: 3455 on 5890 Progress: 3456 on 5890 Progress: 3457 on 5890 Progress: 3458 on 5890 Progress: 3459 on 5890 Progress: 3460 on 5890 Progress: 3461 on 5890 Progress: 3462 on 5890 Progress: 3463 on 5890 Progress: 3464 on 5890 Progress: 3465 on 5890 Progress: 3466 on 5890 Progress: 3467 on 5890 Progress: 3468 on 5890 Progress: 3469 on 5890 Progress: 3470 on 5890 Progress: 3471 on 5890 Progress: 3472 on 5890 Progress: 3473 on 5890 Progress: 3474 on 5890 Progress: 3475 on 5890 Progress: 3476 on 5890 Progress: 3477 on 5890 Progress: 3478 on 5890 Progress: 3479 on 5890 Progress: 3480 on 5890 Progress: 3481 on 5890 Progress: 3482 on 5890 Progress: 3483 on 5890 Progress: 3484 on 5890 Progress: 3485 on 5890 Progress: 3486 on 5890 Progress: 3487 on 5890 Progress: 3488 on 5890 Progress: 3489 on 5890 Progress: 3490 on 5890 Progress: 3491 on 5890 Progress: 3492 on 5890 Progress: 3493 on 5890 Progress: 3494 on 5890 Progress: 3495 on 5890 Progress: 3496 on 5890 Progress: 3497 on 5890 Progress: 3498 on 5890 Progress: 3499 on 5890 Progress: 3500 on 5890 Progress: 3501 on 5890 Progress: 3502 on 5890 Progress: 3503 on 5890 Progress: 3504 on 5890 Progress: 3505 on 5890 Progress: 3506 on 5890 Progress: 3507 on 5890 Progress: 3508 on 5890 Progress: 3509 on 5890 Progress: 3510 on 5890 Progress: 3511 on 5890 Progress: 3512 on 5890 Progress: 3513 on 5890 Progress: 3514 on 5890 Progress: 3515 on 5890 Progress: 3516 on 5890 Progress: 3517 on 5890 Progress: 3518 on 5890 Progress: 3519 on 5890 Progress: 3520 on 5890 Progress: 3521 on 5890 Progress: 3522 on 5890 Progress: 3523 on 5890 Progress: 3524 on 5890 Progress: 3525 on 5890 Progress: 3526 on 5890 Progress: 3527 on 5890 Progress: 3528 on 5890 Progress: 3529 on 5890 Progress: 3530 on 5890 Progress: 3531 on 5890 Progress: 3532 on 5890 Progress: 3533 on 5890 Progress: 3534 on 5890 Progress: 3535 on 5890 Progress: 3536 on 5890 Progress: 3537 on 5890 Progress: 3538 on 5890 Progress: 3539 on 5890 Progress: 3540 on 5890 Progress: 3541 on 5890 Progress: 3542 on 5890 Progress: 3543 on 5890 Progress: 3544 on 5890 Progress: 3545 on 5890 Progress: 3546 on 5890 Progress: 3547 on 5890 Progress: 3548 on 5890 Progress: 3549 on 5890 Progress: 3550 on 5890 Progress: 3551 on 5890 Progress: 3552 on 5890 Progress: 3553 on 5890 Progress: 3554 on 5890 Progress: 3555 on 5890 Progress: 3556 on 5890 Progress: 3557 on 5890 Progress: 3558 on 5890 Progress: 3559 on 5890 Progress: 3560 on 5890 Progress: 3561 on 5890 Progress: 3562 on 5890 Progress: 3563 on 5890 Progress: 3564 on 5890 Progress: 3565 on 5890 Progress: 3566 on 5890 Progress: 3567 on 5890 Progress: 3568 on 5890 Progress: 3569 on 5890 Progress: 3570 on 5890 Progress: 3571 on 5890 Progress: 3572 on 5890 Progress: 3573 on 5890 Progress: 3574 on 5890 Progress: 3575 on 5890 Progress: 3576 on 5890 Progress: 3577 on 5890 Progress: 3578 on 5890 Progress: 3579 on 5890 Progress: 3580 on 5890 Progress: 3581 on 5890 Progress: 3582 on 5890 Progress: 3583 on 5890 Progress: 3584 on 5890 Progress: 3585 on 5890 Progress: 3586 on 5890 Progress: 3587 on 5890 Progress: 3588 on 5890 Progress: 3589 on 5890 Progress: 3590 on 5890 Progress: 3591 on 5890 Progress: 3592 on 5890 Progress: 3593 on 5890 Progress: 3594 on 5890 Progress: 3595 on 5890 Progress: 3596 on 5890 Progress: 3597 on 5890 Progress: 3598 on 5890 Progress: 3599 on 5890 Progress: 3600 on 5890 Progress: 3601 on 5890 Progress: 3602 on 5890 Progress: 3603 on 5890 Progress: 3604 on 5890 Progress: 3605 on 5890 Progress: 3606 on 5890 Progress: 3607 on 5890 Progress: 3608 on 5890 Progress: 3609 on 5890 Progress: 3610 on 5890 Progress: 3611 on 5890 Progress: 3612 on 5890 Progress: 3613 on 5890 Progress: 3614 on 5890 Progress: 3615 on 5890 Progress: 3616 on 5890 Progress: 3617 on 5890 Progress: 3618 on 5890 Progress: 3619 on 5890 Progress: 3620 on 5890 Progress: 3621 on 5890 Progress: 3622 on 5890 Progress: 3623 on 5890 Progress: 3624 on 5890 Progress: 3625 on 5890 Progress: 3626 on 5890 Progress: 3627 on 5890 Progress: 3628 on 5890 Progress: 3629 on 5890 Progress: 3630 on 5890 Progress: 3631 on 5890 Progress: 3632 on 5890 Progress: 3633 on 5890 Progress: 3634 on 5890 Progress: 3635 on 5890 Progress: 3636 on 5890 Progress: 3637 on 5890 Progress: 3638 on 5890 Progress: 3639 on 5890 Progress: 3640 on 5890 Progress: 3641 on 5890 Progress: 3642 on 5890 Progress: 3643 on 5890 Progress: 3644 on 5890 Progress: 3645 on 5890 Progress: 3646 on 5890 Progress: 3647 on 5890 Progress: 3648 on 5890 Progress: 3649 on 5890 Progress: 3650 on 5890 Progress: 3651 on 5890 Progress: 3652 on 5890 Progress: 3653 on 5890 Progress: 3654 on 5890 Progress: 3655 on 5890 Progress: 3656 on 5890 Progress: 3657 on 5890 Progress: 3658 on 5890 Progress: 3659 on 5890 Progress: 3660 on 5890 Progress: 3661 on 5890 Progress: 3662 on 5890 Progress: 3663 on 5890 Progress: 3664 on 5890 Progress: 3665 on 5890 Progress: 3666 on 5890 Progress: 3667 on 5890 Progress: 3668 on 5890 Progress: 3669 on 5890 Progress: 3670 on 5890 Progress: 3671 on 5890 Progress: 3672 on 5890 Progress: 3673 on 5890 Progress: 3674 on 5890 Progress: 3675 on 5890 Progress: 3676 on 5890 Progress: 3677 on 5890 Progress: 3678 on 5890 Progress: 3679 on 5890 Progress: 3680 on 5890 Progress: 3681 on 5890 Progress: 3682 on 5890 Progress: 3683 on 5890 Progress: 3684 on 5890 Progress: 3685 on 5890 Progress: 3686 on 5890 Progress: 3687 on 5890 Progress: 3688 on 5890 Progress: 3689 on 5890 Progress: 3690 on 5890 Progress: 3691 on 5890 Progress: 3692 on 5890 Progress: 3693 on 5890 Progress: 3694 on 5890 Progress: 3695 on 5890 Progress: 3696 on 5890 Progress: 3697 on 5890 Progress: 3698 on 5890 Progress: 3699 on 5890 Progress: 3700 on 5890 Progress: 3701 on 5890 Progress: 3702 on 5890 Progress: 3703 on 5890 Progress: 3704 on 5890 Progress: 3705 on 5890 Progress: 3706 on 5890 Progress: 3707 on 5890 Progress: 3708 on 5890 Progress: 3709 on 5890 Progress: 3710 on 5890 Progress: 3711 on 5890 Progress: 3712 on 5890 Progress: 3713 on 5890 Progress: 3714 on 5890 Progress: 3715 on 5890 Progress: 3716 on 5890 Progress: 3717 on 5890 Progress: 3718 on 5890 Progress: 3719 on 5890 Progress: 3720 on 5890 Progress: 3721 on 5890 Progress: 3722 on 5890 Progress: 3723 on 5890 Progress: 3724 on 5890 Progress: 3725 on 5890 Progress: 3726 on 5890 Progress: 3727 on 5890 Progress: 3728 on 5890 Progress: 3729 on 5890 Progress: 3730 on 5890 Progress: 3731 on 5890 Progress: 3732 on 5890 Progress: 3733 on 5890 Progress: 3734 on 5890 Progress: 3735 on 5890 Progress: 3736 on 5890 Progress: 3737 on 5890 Progress: 3738 on 5890 Progress: 3739 on 5890 Progress: 3740 on 5890 Progress: 3741 on 5890 Progress: 3742 on 5890 Progress: 3743 on 5890 Progress: 3744 on 5890 Progress: 3745 on 5890 Progress: 3746 on 5890 Progress: 3747 on 5890 Progress: 3748 on 5890 Progress: 3749 on 5890 Progress: 3750 on 5890 Progress: 3751 on 5890 Progress: 3752 on 5890 Progress: 3753 on 5890 Progress: 3754 on 5890 Progress: 3755 on 5890 Progress: 3756 on 5890 Progress: 3757 on 5890 Progress: 3758 on 5890 Progress: 3759 on 5890 Progress: 3760 on 5890 Progress: 3761 on 5890 Progress: 3762 on 5890 Progress: 3763 on 5890 Progress: 3764 on 5890 Progress: 3765 on 5890 Progress: 3766 on 5890 Progress: 3767 on 5890 Progress: 3768 on 5890 Progress: 3769 on 5890 Progress: 3770 on 5890 Progress: 3771 on 5890 Progress: 3772 on 5890 Progress: 3773 on 5890 Progress: 3774 on 5890 Progress: 3775 on 5890 Progress: 3776 on 5890 Progress: 3777 on 5890 Progress: 3778 on 5890 Progress: 3779 on 5890 Progress: 3780 on 5890 Progress: 3781 on 5890 Progress: 3782 on 5890 Progress: 3783 on 5890 Progress: 3784 on 5890 Progress: 3785 on 5890 Progress: 3786 on 5890 Progress: 3787 on 5890 Progress: 3788 on 5890 Progress: 3789 on 5890 Progress: 3790 on 5890 Progress: 3791 on 5890 Progress: 3792 on 5890 Progress: 3793 on 5890 Progress: 3794 on 5890 Progress: 3795 on 5890 Progress: 3796 on 5890 Progress: 3797 on 5890 Progress: 3798 on 5890 Progress: 3799 on 5890 Progress: 3800 on 5890 Progress: 3801 on 5890 Progress: 3802 on 5890 Progress: 3803 on 5890 Progress: 3804 on 5890 Progress: 3805 on 5890 Progress: 3806 on 5890 Progress: 3807 on 5890 Progress: 3808 on 5890 Progress: 3809 on 5890 Progress: 3810 on 5890 Progress: 3811 on 5890 Progress: 3812 on 5890 Progress: 3813 on 5890 Progress: 3814 on 5890 Progress: 3815 on 5890 Progress: 3816 on 5890 Progress: 3817 on 5890 Progress: 3818 on 5890 Progress: 3819 on 5890 Progress: 3820 on 5890 Progress: 3821 on 5890 Progress: 3822 on 5890 Progress: 3823 on 5890 Progress: 3824 on 5890 Progress: 3825 on 5890 Progress: 3826 on 5890 Progress: 3827 on 5890 Progress: 3828 on 5890 Progress: 3829 on 5890 Progress: 3830 on 5890 Progress: 3831 on 5890 Progress: 3832 on 5890 Progress: 3833 on 5890 Progress: 3834 on 5890 Progress: 3835 on 5890 Progress: 3836 on 5890 Progress: 3837 on 5890 Progress: 3838 on 5890 Progress: 3839 on 5890 Progress: 3840 on 5890 Progress: 3841 on 5890 Progress: 3842 on 5890 Progress: 3843 on 5890 Progress: 3844 on 5890 Progress: 3845 on 5890 Progress: 3846 on 5890 Progress: 3847 on 5890 Progress: 3848 on 5890 Progress: 3849 on 5890 Progress: 3850 on 5890 Progress: 3851 on 5890 Progress: 3852 on 5890 Progress: 3853 on 5890 Progress: 3854 on 5890 Progress: 3855 on 5890 Progress: 3856 on 5890 Progress: 3857 on 5890 Progress: 3858 on 5890 Progress: 3859 on 5890 Progress: 3860 on 5890 Progress: 3861 on 5890 Progress: 3862 on 5890 Progress: 3863 on 5890 Progress: 3864 on 5890 Progress: 3865 on 5890 Progress: 3866 on 5890 Progress: 3867 on 5890 Progress: 3868 on 5890 Progress: 3869 on 5890 Progress: 3870 on 5890 Progress: 3871 on 5890 Progress: 3872 on 5890 Progress: 3873 on 5890 Progress: 3874 on 5890 Progress: 3875 on 5890 Progress: 3876 on 5890 Progress: 3877 on 5890 Progress: 3878 on 5890 Progress: 3879 on 5890 Progress: 3880 on 5890 Progress: 3881 on 5890 Progress: 3882 on 5890 Progress: 3883 on 5890 Progress: 3884 on 5890 Progress: 3885 on 5890 Progress: 3886 on 5890 Progress: 3887 on 5890 Progress: 3888 on 5890 Progress: 3889 on 5890 Progress: 3890 on 5890 Progress: 3891 on 5890 Progress: 3892 on 5890 Progress: 3893 on 5890 Progress: 3894 on 5890 Progress: 3895 on 5890 Progress: 3896 on 5890 Progress: 3897 on 5890 Progress: 3898 on 5890 Progress: 3899 on 5890 Progress: 3900 on 5890 Progress: 3901 on 5890 Progress: 3902 on 5890 Progress: 3903 on 5890 Progress: 3904 on 5890 Progress: 3905 on 5890 Progress: 3906 on 5890 Progress: 3907 on 5890 Progress: 3908 on 5890 Progress: 3909 on 5890 Progress: 3910 on 5890 Progress: 3911 on 5890 Progress: 3912 on 5890 Progress: 3913 on 5890 Progress: 3914 on 5890 Progress: 3915 on 5890 Progress: 3916 on 5890 Progress: 3917 on 5890 Progress: 3918 on 5890 Progress: 3919 on 5890 Progress: 3920 on 5890 Progress: 3921 on 5890 Progress: 3922 on 5890 Progress: 3923 on 5890 Progress: 3924 on 5890 Progress: 3925 on 5890 Progress: 3926 on 5890 Progress: 3927 on 5890 Progress: 3928 on 5890 Progress: 3929 on 5890 Progress: 3930 on 5890 Progress: 3931 on 5890 Progress: 3932 on 5890 Progress: 3933 on 5890 Progress: 3934 on 5890 Progress: 3935 on 5890 Progress: 3936 on 5890 Progress: 3937 on 5890 Progress: 3938 on 5890 Progress: 3939 on 5890 Progress: 3940 on 5890 Progress: 3941 on 5890 Progress: 3942 on 5890 Progress: 3943 on 5890 Progress: 3944 on 5890 Progress: 3945 on 5890 Progress: 3946 on 5890 Progress: 3947 on 5890 Progress: 3948 on 5890 Progress: 3949 on 5890 Progress: 3950 on 5890 Progress: 3951 on 5890 Progress: 3952 on 5890 Progress: 3953 on 5890 Progress: 3954 on 5890 Progress: 3955 on 5890 Progress: 3956 on 5890 Progress: 3957 on 5890 Progress: 3958 on 5890 Progress: 3959 on 5890 Progress: 3960 on 5890 Progress: 3961 on 5890 Progress: 3962 on 5890 Progress: 3963 on 5890 Progress: 3964 on 5890 Progress: 3965 on 5890 Progress: 3966 on 5890 Progress: 3967 on 5890 Progress: 3968 on 5890 Progress: 3969 on 5890 Progress: 3970 on 5890 Progress: 3971 on 5890 Progress: 3972 on 5890 Progress: 3973 on 5890 Progress: 3974 on 5890 Progress: 3975 on 5890 Progress: 3976 on 5890 Progress: 3977 on 5890 Progress: 3978 on 5890 Progress: 3979 on 5890 Progress: 3980 on 5890 Progress: 3981 on 5890 Progress: 3982 on 5890 Progress: 3983 on 5890 Progress: 3984 on 5890 Progress: 3985 on 5890 Progress: 3986 on 5890 Progress: 3987 on 5890 Progress: 3988 on 5890 Progress: 3989 on 5890 Progress: 3990 on 5890 Progress: 3991 on 5890 Progress: 3992 on 5890 Progress: 3993 on 5890 Progress: 3994 on 5890 Progress: 3995 on 5890 Progress: 3996 on 5890 Progress: 3997 on 5890 Progress: 3998 on 5890 Progress: 3999 on 5890 Progress: 4000 on 5890 Progress: 4001 on 5890 Progress: 4002 on 5890 Progress: 4003 on 5890 Progress: 4004 on 5890 Progress: 4005 on 5890 Progress: 4006 on 5890 Progress: 4007 on 5890 Progress: 4008 on 5890 Progress: 4009 on 5890 Progress: 4010 on 5890 Progress: 4011 on 5890 Progress: 4012 on 5890 Progress: 4013 on 5890 Progress: 4014 on 5890 Progress: 4015 on 5890 Progress: 4016 on 5890 Progress: 4017 on 5890 Progress: 4018 on 5890 Progress: 4019 on 5890 Progress: 4020 on 5890 Progress: 4021 on 5890 Progress: 4022 on 5890 Progress: 4023 on 5890 Progress: 4024 on 5890 Progress: 4025 on 5890 Progress: 4026 on 5890 Progress: 4027 on 5890 Progress: 4028 on 5890 Progress: 4029 on 5890 Progress: 4030 on 5890 Progress: 4031 on 5890 Progress: 4032 on 5890 Progress: 4033 on 5890 Progress: 4034 on 5890 Progress: 4035 on 5890 Progress: 4036 on 5890 Progress: 4037 on 5890 Progress: 4038 on 5890 Progress: 4039 on 5890 Progress: 4040 on 5890 Progress: 4041 on 5890 Progress: 4042 on 5890 Progress: 4043 on 5890 Progress: 4044 on 5890 Progress: 4045 on 5890 Progress: 4046 on 5890 Progress: 4047 on 5890 Progress: 4048 on 5890 Progress: 4049 on 5890 Progress: 4050 on 5890 Progress: 4051 on 5890 Progress: 4052 on 5890 Progress: 4053 on 5890 Progress: 4054 on 5890 Progress: 4055 on 5890 Progress: 4056 on 5890 Progress: 4057 on 5890 Progress: 4058 on 5890 Progress: 4059 on 5890 Progress: 4060 on 5890 Progress: 4061 on 5890 Progress: 4062 on 5890 Progress: 4063 on 5890 Progress: 4064 on 5890 Progress: 4065 on 5890 Progress: 4066 on 5890 Progress: 4067 on 5890 Progress: 4068 on 5890 Progress: 4069 on 5890 Progress: 4070 on 5890 Progress: 4071 on 5890 Progress: 4072 on 5890 Progress: 4073 on 5890 Progress: 4074 on 5890 Progress: 4075 on 5890 Progress: 4076 on 5890 Progress: 4077 on 5890 Progress: 4078 on 5890 Progress: 4079 on 5890 Progress: 4080 on 5890 Progress: 4081 on 5890 Progress: 4082 on 5890 Progress: 4083 on 5890 Progress: 4084 on 5890 Progress: 4085 on 5890 Progress: 4086 on 5890 Progress: 4087 on 5890 Progress: 4088 on 5890 Progress: 4089 on 5890 Progress: 4090 on 5890 Progress: 4091 on 5890 Progress: 4092 on 5890 Progress: 4093 on 5890 Progress: 4094 on 5890 Progress: 4095 on 5890 Progress: 4096 on 5890 Progress: 4097 on 5890 Progress: 4098 on 5890 Progress: 4099 on 5890 Progress: 4100 on 5890 Progress: 4101 on 5890 Progress: 4102 on 5890 Progress: 4103 on 5890 Progress: 4104 on 5890 Progress: 4105 on 5890 Progress: 4106 on 5890 Progress: 4107 on 5890 Progress: 4108 on 5890 Progress: 4109 on 5890 Progress: 4110 on 5890 Progress: 4111 on 5890 Progress: 4112 on 5890 Progress: 4113 on 5890 Progress: 4114 on 5890 Progress: 4115 on 5890 Progress: 4116 on 5890 Progress: 4117 on 5890 Progress: 4118 on 5890 Progress: 4119 on 5890 Progress: 4120 on 5890 Progress: 4121 on 5890 Progress: 4122 on 5890 Progress: 4123 on 5890 Progress: 4124 on 5890 Progress: 4125 on 5890 Progress: 4126 on 5890 Progress: 4127 on 5890 Progress: 4128 on 5890 Progress: 4129 on 5890 Progress: 4130 on 5890 Progress: 4131 on 5890 Progress: 4132 on 5890 Progress: 4133 on 5890 Progress: 4134 on 5890 Progress: 4135 on 5890 Progress: 4136 on 5890 Progress: 4137 on 5890 Progress: 4138 on 5890 Progress: 4139 on 5890 Progress: 4140 on 5890 Progress: 4141 on 5890 Progress: 4142 on 5890 Progress: 4143 on 5890 Progress: 4144 on 5890 Progress: 4145 on 5890 Progress: 4146 on 5890 Progress: 4147 on 5890 Progress: 4148 on 5890 Progress: 4149 on 5890 Progress: 4150 on 5890 Progress: 4151 on 5890 Progress: 4152 on 5890 Progress: 4153 on 5890 Progress: 4154 on 5890 Progress: 4155 on 5890 Progress: 4156 on 5890 Progress: 4157 on 5890 Progress: 4158 on 5890 Progress: 4159 on 5890 Progress: 4160 on 5890 Progress: 4161 on 5890 Progress: 4162 on 5890 Progress: 4163 on 5890 Progress: 4164 on 5890 Progress: 4165 on 5890 Progress: 4166 on 5890 Progress: 4167 on 5890 Progress: 4168 on 5890 Progress: 4169 on 5890 Progress: 4170 on 5890 Progress: 4171 on 5890 Progress: 4172 on 5890 Progress: 4173 on 5890 Progress: 4174 on 5890 Progress: 4175 on 5890 Progress: 4176 on 5890 Progress: 4177 on 5890 Progress: 4178 on 5890 Progress: 4179 on 5890 Progress: 4180 on 5890 Progress: 4181 on 5890 Progress: 4182 on 5890 Progress: 4183 on 5890 Progress: 4184 on 5890 Progress: 4185 on 5890 Progress: 4186 on 5890 Progress: 4187 on 5890 Progress: 4188 on 5890 Progress: 4189 on 5890 Progress: 4190 on 5890 Progress: 4191 on 5890 Progress: 4192 on 5890 Progress: 4193 on 5890 Progress: 4194 on 5890 Progress: 4195 on 5890 Progress: 4196 on 5890 Progress: 4197 on 5890 Progress: 4198 on 5890 Progress: 4199 on 5890 Progress: 4200 on 5890 Progress: 4201 on 5890 Progress: 4202 on 5890 Progress: 4203 on 5890 Progress: 4204 on 5890 Progress: 4205 on 5890 Progress: 4206 on 5890 Progress: 4207 on 5890 Progress: 4208 on 5890 Progress: 4209 on 5890 Progress: 4210 on 5890 Progress: 4211 on 5890 Progress: 4212 on 5890 Progress: 4213 on 5890 Progress: 4214 on 5890 Progress: 4215 on 5890 Progress: 4216 on 5890 Progress: 4217 on 5890 Progress: 4218 on 5890 Progress: 4219 on 5890 Progress: 4220 on 5890 Progress: 4221 on 5890 Progress: 4222 on 5890 Progress: 4223 on 5890 Progress: 4224 on 5890 Progress: 4225 on 5890 Progress: 4226 on 5890 Progress: 4227 on 5890 Progress: 4228 on 5890 Progress: 4229 on 5890 Progress: 4230 on 5890 Progress: 4231 on 5890 Progress: 4232 on 5890 Progress: 4233 on 5890 Progress: 4234 on 5890 Progress: 4235 on 5890 Progress: 4236 on 5890 Progress: 4237 on 5890 Progress: 4238 on 5890 Progress: 4239 on 5890 Progress: 4240 on 5890 Progress: 4241 on 5890 Progress: 4242 on 5890 Progress: 4243 on 5890 Progress: 4244 on 5890 Progress: 4245 on 5890 Progress: 4246 on 5890 Progress: 4247 on 5890 Progress: 4248 on 5890 Progress: 4249 on 5890 Progress: 4250 on 5890 Progress: 4251 on 5890 Progress: 4252 on 5890 Progress: 4253 on 5890 Progress: 4254 on 5890 Progress: 4255 on 5890 Progress: 4256 on 5890 Progress: 4257 on 5890 Progress: 4258 on 5890 Progress: 4259 on 5890 Progress: 4260 on 5890 Progress: 4261 on 5890 Progress: 4262 on 5890 Progress: 4263 on 5890 Progress: 4264 on 5890 Progress: 4265 on 5890 Progress: 4266 on 5890 Progress: 4267 on 5890 Progress: 4268 on 5890 Progress: 4269 on 5890 Progress: 4270 on 5890 Progress: 4271 on 5890 Progress: 4272 on 5890 Progress: 4273 on 5890 Progress: 4274 on 5890 Progress: 4275 on 5890 Progress: 4276 on 5890 Progress: 4277 on 5890 Progress: 4278 on 5890 Progress: 4279 on 5890 Progress: 4280 on 5890 Progress: 4281 on 5890 Progress: 4282 on 5890 Progress: 4283 on 5890 Progress: 4284 on 5890 Progress: 4285 on 5890 Progress: 4286 on 5890 Progress: 4287 on 5890 Progress: 4288 on 5890 Progress: 4289 on 5890 Progress: 4290 on 5890 Progress: 4291 on 5890 Progress: 4292 on 5890 Progress: 4293 on 5890 Progress: 4294 on 5890 Progress: 4295 on 5890 Progress: 4296 on 5890 Progress: 4297 on 5890 Progress: 4298 on 5890 Progress: 4299 on 5890 Progress: 4300 on 5890 Progress: 4301 on 5890 Progress: 4302 on 5890 Progress: 4303 on 5890 Progress: 4304 on 5890 Progress: 4305 on 5890 Progress: 4306 on 5890 Progress: 4307 on 5890 Progress: 4308 on 5890 Progress: 4309 on 5890 Progress: 4310 on 5890 Progress: 4311 on 5890 Progress: 4312 on 5890 Progress: 4313 on 5890 Progress: 4314 on 5890 Progress: 4315 on 5890 Progress: 4316 on 5890 Progress: 4317 on 5890 Progress: 4318 on 5890 Progress: 4319 on 5890 Progress: 4320 on 5890 Progress: 4321 on 5890 Progress: 4322 on 5890 Progress: 4323 on 5890 Progress: 4324 on 5890 Progress: 4325 on 5890 Progress: 4326 on 5890 Progress: 4327 on 5890 Progress: 4328 on 5890 Progress: 4329 on 5890 Progress: 4330 on 5890 Progress: 4331 on 5890 Progress: 4332 on 5890 Progress: 4333 on 5890 Progress: 4334 on 5890 Progress: 4335 on 5890 Progress: 4336 on 5890 Progress: 4337 on 5890 Progress: 4338 on 5890 Progress: 4339 on 5890 Progress: 4340 on 5890 Progress: 4341 on 5890 Progress: 4342 on 5890 Progress: 4343 on 5890 Progress: 4344 on 5890 Progress: 4345 on 5890 Progress: 4346 on 5890 Progress: 4347 on 5890 Progress: 4348 on 5890 Progress: 4349 on 5890 Progress: 4350 on 5890 Progress: 4351 on 5890 Progress: 4352 on 5890 Progress: 4353 on 5890 Progress: 4354 on 5890 Progress: 4355 on 5890 Progress: 4356 on 5890 Progress: 4357 on 5890 Progress: 4358 on 5890 Progress: 4359 on 5890 Progress: 4360 on 5890 Progress: 4361 on 5890 Progress: 4362 on 5890 Progress: 4363 on 5890 Progress: 4364 on 5890 Progress: 4365 on 5890 Progress: 4366 on 5890 Progress: 4367 on 5890 Progress: 4368 on 5890 Progress: 4369 on 5890 Progress: 4370 on 5890 Progress: 4371 on 5890 Progress: 4372 on 5890 Progress: 4373 on 5890 Progress: 4374 on 5890 Progress: 4375 on 5890 Progress: 4376 on 5890 Progress: 4377 on 5890 Progress: 4378 on 5890 Progress: 4379 on 5890 Progress: 4380 on 5890 Progress: 4381 on 5890 Progress: 4382 on 5890 Progress: 4383 on 5890 Progress: 4384 on 5890 Progress: 4385 on 5890 Progress: 4386 on 5890 Progress: 4387 on 5890 Progress: 4388 on 5890 Progress: 4389 on 5890 Progress: 4390 on 5890 Progress: 4391 on 5890 Progress: 4392 on 5890 Progress: 4393 on 5890 Progress: 4394 on 5890 Progress: 4395 on 5890 Progress: 4396 on 5890 Progress: 4397 on 5890 Progress: 4398 on 5890 Progress: 4399 on 5890 Progress: 4400 on 5890 Progress: 4401 on 5890 Progress: 4402 on 5890 Progress: 4403 on 5890 Progress: 4404 on 5890 Progress: 4405 on 5890 Progress: 4406 on 5890 Progress: 4407 on 5890 Progress: 4408 on 5890 Progress: 4409 on 5890 Progress: 4410 on 5890 Progress: 4411 on 5890 Progress: 4412 on 5890 Progress: 4413 on 5890 Progress: 4414 on 5890 Progress: 4415 on 5890 Progress: 4416 on 5890 Progress: 4417 on 5890 Progress: 4418 on 5890 Progress: 4419 on 5890 Progress: 4420 on 5890 Progress: 4421 on 5890 Progress: 4422 on 5890 Progress: 4423 on 5890 Progress: 4424 on 5890 Progress: 4425 on 5890 Progress: 4426 on 5890 Progress: 4427 on 5890 Progress: 4428 on 5890 Progress: 4429 on 5890 Progress: 4430 on 5890 Progress: 4431 on 5890 Progress: 4432 on 5890 Progress: 4433 on 5890 Progress: 4434 on 5890 Progress: 4435 on 5890 Progress: 4436 on 5890 Progress: 4437 on 5890 Progress: 4438 on 5890 Progress: 4439 on 5890 Progress: 4440 on 5890 Progress: 4441 on 5890 Progress: 4442 on 5890 Progress: 4443 on 5890 Progress: 4444 on 5890 Progress: 4445 on 5890 Progress: 4446 on 5890 Progress: 4447 on 5890 Progress: 4448 on 5890 Progress: 4449 on 5890 Progress: 4450 on 5890 Progress: 4451 on 5890 Progress: 4452 on 5890 Progress: 4453 on 5890 Progress: 4454 on 5890 Progress: 4455 on 5890 Progress: 4456 on 5890 Progress: 4457 on 5890 Progress: 4458 on 5890 Progress: 4459 on 5890 Progress: 4460 on 5890 Progress: 4461 on 5890 Progress: 4462 on 5890 Progress: 4463 on 5890 Progress: 4464 on 5890 Progress: 4465 on 5890 Progress: 4466 on 5890 Progress: 4467 on 5890 Progress: 4468 on 5890 Progress: 4469 on 5890 Progress: 4470 on 5890 Progress: 4471 on 5890 Progress: 4472 on 5890 Progress: 4473 on 5890 Progress: 4474 on 5890 Progress: 4475 on 5890 Progress: 4476 on 5890 Progress: 4477 on 5890 Progress: 4478 on 5890 Progress: 4479 on 5890 Progress: 4480 on 5890 Progress: 4481 on 5890 Progress: 4482 on 5890 Progress: 4483 on 5890 Progress: 4484 on 5890 Progress: 4485 on 5890 Progress: 4486 on 5890 Progress: 4487 on 5890 Progress: 4488 on 5890 Progress: 4489 on 5890 Progress: 4490 on 5890 Progress: 4491 on 5890 Progress: 4492 on 5890 Progress: 4493 on 5890 Progress: 4494 on 5890 Progress: 4495 on 5890 Progress: 4496 on 5890 Progress: 4497 on 5890 Progress: 4498 on 5890 Progress: 4499 on 5890 Progress: 4500 on 5890 Progress: 4501 on 5890 Progress: 4502 on 5890 Progress: 4503 on 5890 Progress: 4504 on 5890 Progress: 4505 on 5890 Progress: 4506 on 5890 Progress: 4507 on 5890 Progress: 4508 on 5890 Progress: 4509 on 5890 Progress: 4510 on 5890 Progress: 4511 on 5890 Progress: 4512 on 5890 Progress: 4513 on 5890 Progress: 4514 on 5890 Progress: 4515 on 5890 Progress: 4516 on 5890 Progress: 4517 on 5890 Progress: 4518 on 5890 Progress: 4519 on 5890 Progress: 4520 on 5890 Progress: 4521 on 5890 Progress: 4522 on 5890 Progress: 4523 on 5890 Progress: 4524 on 5890 Progress: 4525 on 5890 Progress: 4526 on 5890 Progress: 4527 on 5890 Progress: 4528 on 5890 Progress: 4529 on 5890 Progress: 4530 on 5890 Progress: 4531 on 5890 Progress: 4532 on 5890 Progress: 4533 on 5890 Progress: 4534 on 5890 Progress: 4535 on 5890 Progress: 4536 on 5890 Progress: 4537 on 5890 Progress: 4538 on 5890 Progress: 4539 on 5890 Progress: 4540 on 5890 Progress: 4541 on 5890 Progress: 4542 on 5890 Progress: 4543 on 5890 Progress: 4544 on 5890 Progress: 4545 on 5890 Progress: 4546 on 5890 Progress: 4547 on 5890 Progress: 4548 on 5890 Progress: 4549 on 5890 Progress: 4550 on 5890 Progress: 4551 on 5890 Progress: 4552 on 5890 Progress: 4553 on 5890 Progress: 4554 on 5890 Progress: 4555 on 5890 Progress: 4556 on 5890 Progress: 4557 on 5890 Progress: 4558 on 5890 Progress: 4559 on 5890 Progress: 4560 on 5890 Progress: 4561 on 5890 Progress: 4562 on 5890 Progress: 4563 on 5890 Progress: 4564 on 5890 Progress: 4565 on 5890 Progress: 4566 on 5890 Progress: 4567 on 5890 Progress: 4568 on 5890 Progress: 4569 on 5890 Progress: 4570 on 5890 Progress: 4571 on 5890 Progress: 4572 on 5890 Progress: 4573 on 5890 Progress: 4574 on 5890 Progress: 4575 on 5890 Progress: 4576 on 5890 Progress: 4577 on 5890 Progress: 4578 on 5890 Progress: 4579 on 5890 Progress: 4580 on 5890 Progress: 4581 on 5890 Progress: 4582 on 5890 Progress: 4583 on 5890 Progress: 4584 on 5890 Progress: 4585 on 5890 Progress: 4586 on 5890 Progress: 4587 on 5890 Progress: 4588 on 5890 Progress: 4589 on 5890 Progress: 4590 on 5890 Progress: 4591 on 5890 Progress: 4592 on 5890 Progress: 4593 on 5890 Progress: 4594 on 5890 Progress: 4595 on 5890 Progress: 4596 on 5890 Progress: 4597 on 5890 Progress: 4598 on 5890 Progress: 4599 on 5890 Progress: 4600 on 5890 Progress: 4601 on 5890 Progress: 4602 on 5890 Progress: 4603 on 5890 Progress: 4604 on 5890 Progress: 4605 on 5890 Progress: 4606 on 5890 Progress: 4607 on 5890 Progress: 4608 on 5890 Progress: 4609 on 5890 Progress: 4610 on 5890 Progress: 4611 on 5890 Progress: 4612 on 5890 Progress: 4613 on 5890 Progress: 4614 on 5890 Progress: 4615 on 5890 Progress: 4616 on 5890 Progress: 4617 on 5890 Progress: 4618 on 5890 Progress: 4619 on 5890 Progress: 4620 on 5890 Progress: 4621 on 5890 Progress: 4622 on 5890 Progress: 4623 on 5890 Progress: 4624 on 5890 Progress: 4625 on 5890 Progress: 4626 on 5890 Progress: 4627 on 5890 Progress: 4628 on 5890 Progress: 4629 on 5890 Progress: 4630 on 5890 Progress: 4631 on 5890 Progress: 4632 on 5890 Progress: 4633 on 5890 Progress: 4634 on 5890 Progress: 4635 on 5890 Progress: 4636 on 5890 Progress: 4637 on 5890 Progress: 4638 on 5890 Progress: 4639 on 5890 Progress: 4640 on 5890 Progress: 4641 on 5890 Progress: 4642 on 5890 Progress: 4643 on 5890 Progress: 4644 on 5890 Progress: 4645 on 5890 Progress: 4646 on 5890 Progress: 4647 on 5890 Progress: 4648 on 5890 Progress: 4649 on 5890 Progress: 4650 on 5890 Progress: 4651 on 5890 Progress: 4652 on 5890 Progress: 4653 on 5890 Progress: 4654 on 5890 Progress: 4655 on 5890 Progress: 4656 on 5890 Progress: 4657 on 5890 Progress: 4658 on 5890 Progress: 4659 on 5890 Progress: 4660 on 5890 Progress: 4661 on 5890 Progress: 4662 on 5890 Progress: 4663 on 5890 Progress: 4664 on 5890 Progress: 4665 on 5890 Progress: 4666 on 5890 Progress: 4667 on 5890 Progress: 4668 on 5890 Progress: 4669 on 5890 Progress: 4670 on 5890 Progress: 4671 on 5890 Progress: 4672 on 5890 Progress: 4673 on 5890 Progress: 4674 on 5890 Progress: 4675 on 5890 Progress: 4676 on 5890 Progress: 4677 on 5890 Progress: 4678 on 5890 Progress: 4679 on 5890 Progress: 4680 on 5890 Progress: 4681 on 5890 Progress: 4682 on 5890 Progress: 4683 on 5890 Progress: 4684 on 5890 Progress: 4685 on 5890 Progress: 4686 on 5890 Progress: 4687 on 5890 Progress: 4688 on 5890 Progress: 4689 on 5890 Progress: 4690 on 5890 Progress: 4691 on 5890 Progress: 4692 on 5890 Progress: 4693 on 5890 Progress: 4694 on 5890 Progress: 4695 on 5890 Progress: 4696 on 5890 Progress: 4697 on 5890 Progress: 4698 on 5890 Progress: 4699 on 5890 Progress: 4700 on 5890 Progress: 4701 on 5890 Progress: 4702 on 5890 Progress: 4703 on 5890 Progress: 4704 on 5890 Progress: 4705 on 5890 Progress: 4706 on 5890 Progress: 4707 on 5890 Progress: 4708 on 5890 Progress: 4709 on 5890 Progress: 4710 on 5890 Progress: 4711 on 5890 Progress: 4712 on 5890 Progress: 4713 on 5890 Progress: 4714 on 5890 Progress: 4715 on 5890 Progress: 4716 on 5890 Progress: 4717 on 5890 Progress: 4718 on 5890 Progress: 4719 on 5890 Progress: 4720 on 5890 Progress: 4721 on 5890 Progress: 4722 on 5890 Progress: 4723 on 5890 Progress: 4724 on 5890 Progress: 4725 on 5890 Progress: 4726 on 5890 Progress: 4727 on 5890 Progress: 4728 on 5890 Progress: 4729 on 5890 Progress: 4730 on 5890 Progress: 4731 on 5890 Progress: 4732 on 5890 Progress: 4733 on 5890 Progress: 4734 on 5890 Progress: 4735 on 5890 Progress: 4736 on 5890 Progress: 4737 on 5890 Progress: 4738 on 5890 Progress: 4739 on 5890 Progress: 4740 on 5890 Progress: 4741 on 5890 Progress: 4742 on 5890 Progress: 4743 on 5890 Progress: 4744 on 5890 Progress: 4745 on 5890 Progress: 4746 on 5890 Progress: 4747 on 5890 Progress: 4748 on 5890 Progress: 4749 on 5890 Progress: 4750 on 5890 Progress: 4751 on 5890 Progress: 4752 on 5890 Progress: 4753 on 5890 Progress: 4754 on 5890 Progress: 4755 on 5890 Progress: 4756 on 5890 Progress: 4757 on 5890 Progress: 4758 on 5890 Progress: 4759 on 5890 Progress: 4760 on 5890 Progress: 4761 on 5890 Progress: 4762 on 5890 Progress: 4763 on 5890 Progress: 4764 on 5890 Progress: 4765 on 5890 Progress: 4766 on 5890 Progress: 4767 on 5890 Progress: 4768 on 5890 Progress: 4769 on 5890 Progress: 4770 on 5890 Progress: 4771 on 5890 Progress: 4772 on 5890 Progress: 4773 on 5890 Progress: 4774 on 5890 Progress: 4775 on 5890 Progress: 4776 on 5890 Progress: 4777 on 5890 Progress: 4778 on 5890 Progress: 4779 on 5890 Progress: 4780 on 5890 Progress: 4781 on 5890 Progress: 4782 on 5890 Progress: 4783 on 5890 Progress: 4784 on 5890 Progress: 4785 on 5890 Progress: 4786 on 5890 Progress: 4787 on 5890 Progress: 4788 on 5890 Progress: 4789 on 5890 Progress: 4790 on 5890 Progress: 4791 on 5890 Progress: 4792 on 5890 Progress: 4793 on 5890 Progress: 4794 on 5890 Progress: 4795 on 5890 Progress: 4796 on 5890 Progress: 4797 on 5890 Progress: 4798 on 5890 Progress: 4799 on 5890 Progress: 4800 on 5890 Progress: 4801 on 5890 Progress: 4802 on 5890 Progress: 4803 on 5890 Progress: 4804 on 5890 Progress: 4805 on 5890 Progress: 4806 on 5890 Progress: 4807 on 5890 Progress: 4808 on 5890 Progress: 4809 on 5890 Progress: 4810 on 5890 Progress: 4811 on 5890 Progress: 4812 on 5890 Progress: 4813 on 5890 Progress: 4814 on 5890 Progress: 4815 on 5890 Progress: 4816 on 5890 Progress: 4817 on 5890 Progress: 4818 on 5890 Progress: 4819 on 5890 Progress: 4820 on 5890 Progress: 4821 on 5890 Progress: 4822 on 5890 Progress: 4823 on 5890 Progress: 4824 on 5890 Progress: 4825 on 5890 Progress: 4826 on 5890 Progress: 4827 on 5890 Progress: 4828 on 5890 Progress: 4829 on 5890 Progress: 4830 on 5890 Progress: 4831 on 5890 Progress: 4832 on 5890 Progress: 4833 on 5890 Progress: 4834 on 5890 Progress: 4835 on 5890 Progress: 4836 on 5890 Progress: 4837 on 5890 Progress: 4838 on 5890 Progress: 4839 on 5890 Progress: 4840 on 5890 Progress: 4841 on 5890 Progress: 4842 on 5890 Progress: 4843 on 5890 Progress: 4844 on 5890 Progress: 4845 on 5890 Progress: 4846 on 5890 Progress: 4847 on 5890 Progress: 4848 on 5890 Progress: 4849 on 5890 Progress: 4850 on 5890 Progress: 4851 on 5890 Progress: 4852 on 5890 Progress: 4853 on 5890 Progress: 4854 on 5890 Progress: 4855 on 5890 Progress: 4856 on 5890 Progress: 4857 on 5890 Progress: 4858 on 5890 Progress: 4859 on 5890 Progress: 4860 on 5890 Progress: 4861 on 5890 Progress: 4862 on 5890 Progress: 4863 on 5890 Progress: 4864 on 5890 Progress: 4865 on 5890 Progress: 4866 on 5890 Progress: 4867 on 5890 Progress: 4868 on 5890 Progress: 4869 on 5890 Progress: 4870 on 5890 Progress: 4871 on 5890 Progress: 4872 on 5890 Progress: 4873 on 5890 Progress: 4874 on 5890 Progress: 4875 on 5890 Progress: 4876 on 5890 Progress: 4877 on 5890 Progress: 4878 on 5890 Progress: 4879 on 5890 Progress: 4880 on 5890 Progress: 4881 on 5890 Progress: 4882 on 5890 Progress: 4883 on 5890 Progress: 4884 on 5890 Progress: 4885 on 5890 Progress: 4886 on 5890 Progress: 4887 on 5890 Progress: 4888 on 5890 Progress: 4889 on 5890 Progress: 4890 on 5890 Progress: 4891 on 5890 Progress: 4892 on 5890 Progress: 4893 on 5890 Progress: 4894 on 5890 Progress: 4895 on 5890 Progress: 4896 on 5890 Progress: 4897 on 5890 Progress: 4898 on 5890 Progress: 4899 on 5890 Progress: 4900 on 5890 Progress: 4901 on 5890 Progress: 4902 on 5890 Progress: 4903 on 5890 Progress: 4904 on 5890 Progress: 4905 on 5890 Progress: 4906 on 5890 Progress: 4907 on 5890 Progress: 4908 on 5890 Progress: 4909 on 5890 Progress: 4910 on 5890 Progress: 4911 on 5890 Progress: 4912 on 5890 Progress: 4913 on 5890 Progress: 4914 on 5890 Progress: 4915 on 5890 Progress: 4916 on 5890 Progress: 4917 on 5890 Progress: 4918 on 5890 Progress: 4919 on 5890 Progress: 4920 on 5890 Progress: 4921 on 5890 Progress: 4922 on 5890 Progress: 4923 on 5890 Progress: 4924 on 5890 Progress: 4925 on 5890 Progress: 4926 on 5890 Progress: 4927 on 5890 Progress: 4928 on 5890 Progress: 4929 on 5890 Progress: 4930 on 5890 Progress: 4931 on 5890 Progress: 4932 on 5890 Progress: 4933 on 5890 Progress: 4934 on 5890 Progress: 4935 on 5890 Progress: 4936 on 5890 Progress: 4937 on 5890 Progress: 4938 on 5890 Progress: 4939 on 5890 Progress: 4940 on 5890 Progress: 4941 on 5890 Progress: 4942 on 5890 Progress: 4943 on 5890 Progress: 4944 on 5890 Progress: 4945 on 5890 Progress: 4946 on 5890 Progress: 4947 on 5890 Progress: 4948 on 5890 Progress: 4949 on 5890 Progress: 4950 on 5890 Progress: 4951 on 5890 Progress: 4952 on 5890 Progress: 4953 on 5890 Progress: 4954 on 5890 Progress: 4955 on 5890 Progress: 4956 on 5890 Progress: 4957 on 5890 Progress: 4958 on 5890 Progress: 4959 on 5890 Progress: 4960 on 5890 Progress: 4961 on 5890 Progress: 4962 on 5890 Progress: 4963 on 5890 Progress: 4964 on 5890 Progress: 4965 on 5890 Progress: 4966 on 5890 Progress: 4967 on 5890 Progress: 4968 on 5890 Progress: 4969 on 5890 Progress: 4970 on 5890 Progress: 4971 on 5890 Progress: 4972 on 5890 Progress: 4973 on 5890 Progress: 4974 on 5890 Progress: 4975 on 5890 Progress: 4976 on 5890 Progress: 4977 on 5890 Progress: 4978 on 5890 Progress: 4979 on 5890 Progress: 4980 on 5890 Progress: 4981 on 5890 Progress: 4982 on 5890 Progress: 4983 on 5890 Progress: 4984 on 5890 Progress: 4985 on 5890 Progress: 4986 on 5890 Progress: 4987 on 5890 Progress: 4988 on 5890 Progress: 4989 on 5890 Progress: 4990 on 5890 Progress: 4991 on 5890 Progress: 4992 on 5890 Progress: 4993 on 5890 Progress: 4994 on 5890 Progress: 4995 on 5890 Progress: 4996 on 5890 Progress: 4997 on 5890 Progress: 4998 on 5890 Progress: 4999 on 5890 Progress: 5000 on 5890 Progress: 5001 on 5890 Progress: 5002 on 5890 Progress: 5003 on 5890 Progress: 5004 on 5890 Progress: 5005 on 5890 Progress: 5006 on 5890 Progress: 5007 on 5890 Progress: 5008 on 5890 Progress: 5009 on 5890 Progress: 5010 on 5890 Progress: 5011 on 5890 Progress: 5012 on 5890 Progress: 5013 on 5890 Progress: 5014 on 5890 Progress: 5015 on 5890 Progress: 5016 on 5890 Progress: 5017 on 5890 Progress: 5018 on 5890 Progress: 5019 on 5890 Progress: 5020 on 5890 Progress: 5021 on 5890 Progress: 5022 on 5890 Progress: 5023 on 5890 Progress: 5024 on 5890 Progress: 5025 on 5890 Progress: 5026 on 5890 Progress: 5027 on 5890 Progress: 5028 on 5890 Progress: 5029 on 5890 Progress: 5030 on 5890 Progress: 5031 on 5890 Progress: 5032 on 5890 Progress: 5033 on 5890 Progress: 5034 on 5890 Progress: 5035 on 5890 Progress: 5036 on 5890 Progress: 5037 on 5890 Progress: 5038 on 5890 Progress: 5039 on 5890 Progress: 5040 on 5890 Progress: 5041 on 5890 Progress: 5042 on 5890 Progress: 5043 on 5890 Progress: 5044 on 5890 Progress: 5045 on 5890 Progress: 5046 on 5890 Progress: 5047 on 5890 Progress: 5048 on 5890 Progress: 5049 on 5890 Progress: 5050 on 5890 Progress: 5051 on 5890 Progress: 5052 on 5890 Progress: 5053 on 5890 Progress: 5054 on 5890 Progress: 5055 on 5890 Progress: 5056 on 5890 Progress: 5057 on 5890 Progress: 5058 on 5890 Progress: 5059 on 5890 Progress: 5060 on 5890 Progress: 5061 on 5890 Progress: 5062 on 5890 Progress: 5063 on 5890 Progress: 5064 on 5890 Progress: 5065 on 5890 Progress: 5066 on 5890 Progress: 5067 on 5890 Progress: 5068 on 5890 Progress: 5069 on 5890 Progress: 5070 on 5890 Progress: 5071 on 5890 Progress: 5072 on 5890 Progress: 5073 on 5890 Progress: 5074 on 5890 Progress: 5075 on 5890 Progress: 5076 on 5890 Progress: 5077 on 5890 Progress: 5078 on 5890 Progress: 5079 on 5890 Progress: 5080 on 5890 Progress: 5081 on 5890 Progress: 5082 on 5890 Progress: 5083 on 5890 Progress: 5084 on 5890 Progress: 5085 on 5890 Progress: 5086 on 5890 Progress: 5087 on 5890 Progress: 5088 on 5890 Progress: 5089 on 5890 Progress: 5090 on 5890 Progress: 5091 on 5890 Progress: 5092 on 5890 Progress: 5093 on 5890 Progress: 5094 on 5890 Progress: 5095 on 5890 Progress: 5096 on 5890 Progress: 5097 on 5890 Progress: 5098 on 5890 Progress: 5099 on 5890 Progress: 5100 on 5890 Progress: 5101 on 5890 Progress: 5102 on 5890 Progress: 5103 on 5890 Progress: 5104 on 5890 Progress: 5105 on 5890 Progress: 5106 on 5890 Progress: 5107 on 5890 Progress: 5108 on 5890 Progress: 5109 on 5890 Progress: 5110 on 5890 Progress: 5111 on 5890 Progress: 5112 on 5890 Progress: 5113 on 5890 Progress: 5114 on 5890 Progress: 5115 on 5890 Progress: 5116 on 5890 Progress: 5117 on 5890 Progress: 5118 on 5890 Progress: 5119 on 5890 Progress: 5120 on 5890 Progress: 5121 on 5890 Progress: 5122 on 5890 Progress: 5123 on 5890 Progress: 5124 on 5890 Progress: 5125 on 5890 Progress: 5126 on 5890 Progress: 5127 on 5890 Progress: 5128 on 5890 Progress: 5129 on 5890 Progress: 5130 on 5890 Progress: 5131 on 5890 Progress: 5132 on 5890 Progress: 5133 on 5890 Progress: 5134 on 5890 Progress: 5135 on 5890 Progress: 5136 on 5890 Progress: 5137 on 5890 Progress: 5138 on 5890 Progress: 5139 on 5890 Progress: 5140 on 5890 Progress: 5141 on 5890 Progress: 5142 on 5890 Progress: 5143 on 5890 Progress: 5144 on 5890 Progress: 5145 on 5890 Progress: 5146 on 5890 Progress: 5147 on 5890 Progress: 5148 on 5890 Progress: 5149 on 5890 Progress: 5150 on 5890 Progress: 5151 on 5890 Progress: 5152 on 5890 Progress: 5153 on 5890 Progress: 5154 on 5890 Progress: 5155 on 5890 Progress: 5156 on 5890 Progress: 5157 on 5890 Progress: 5158 on 5890 Progress: 5159 on 5890 Progress: 5160 on 5890 Progress: 5161 on 5890 Progress: 5162 on 5890 Progress: 5163 on 5890 Progress: 5164 on 5890 Progress: 5165 on 5890 Progress: 5166 on 5890 Progress: 5167 on 5890 Progress: 5168 on 5890 Progress: 5169 on 5890 Progress: 5170 on 5890 Progress: 5171 on 5890 Progress: 5172 on 5890 Progress: 5173 on 5890 Progress: 5174 on 5890 Progress: 5175 on 5890 Progress: 5176 on 5890 Progress: 5177 on 5890 Progress: 5178 on 5890 Progress: 5179 on 5890 Progress: 5180 on 5890 Progress: 5181 on 5890 Progress: 5182 on 5890 Progress: 5183 on 5890 Progress: 5184 on 5890 Progress: 5185 on 5890 Progress: 5186 on 5890 Progress: 5187 on 5890 Progress: 5188 on 5890 Progress: 5189 on 5890 Progress: 5190 on 5890 Progress: 5191 on 5890 Progress: 5192 on 5890 Progress: 5193 on 5890 Progress: 5194 on 5890 Progress: 5195 on 5890 Progress: 5196 on 5890 Progress: 5197 on 5890 Progress: 5198 on 5890 Progress: 5199 on 5890 Progress: 5200 on 5890 Progress: 5201 on 5890 Progress: 5202 on 5890 Progress: 5203 on 5890 Progress: 5204 on 5890 Progress: 5205 on 5890 Progress: 5206 on 5890 Progress: 5207 on 5890 Progress: 5208 on 5890 Progress: 5209 on 5890 Progress: 5210 on 5890 Progress: 5211 on 5890 Progress: 5212 on 5890 Progress: 5213 on 5890 Progress: 5214 on 5890 Progress: 5215 on 5890 Progress: 5216 on 5890 Progress: 5217 on 5890 Progress: 5218 on 5890 Progress: 5219 on 5890 Progress: 5220 on 5890 Progress: 5221 on 5890 Progress: 5222 on 5890 Progress: 5223 on 5890 Progress: 5224 on 5890 Progress: 5225 on 5890 Progress: 5226 on 5890 Progress: 5227 on 5890 Progress: 5228 on 5890 Progress: 5229 on 5890 Progress: 5230 on 5890 Progress: 5231 on 5890 Progress: 5232 on 5890 Progress: 5233 on 5890 Progress: 5234 on 5890 Progress: 5235 on 5890 Progress: 5236 on 5890 Progress: 5237 on 5890 Progress: 5238 on 5890 Progress: 5239 on 5890 Progress: 5240 on 5890 Progress: 5241 on 5890 Progress: 5242 on 5890 Progress: 5243 on 5890 Progress: 5244 on 5890 Progress: 5245 on 5890 Progress: 5246 on 5890 Progress: 5247 on 5890 Progress: 5248 on 5890 Progress: 5249 on 5890 Progress: 5250 on 5890 Progress: 5251 on 5890 Progress: 5252 on 5890 Progress: 5253 on 5890 Progress: 5254 on 5890 Progress: 5255 on 5890 Progress: 5256 on 5890 Progress: 5257 on 5890 Progress: 5258 on 5890 Progress: 5259 on 5890 Progress: 5260 on 5890 Progress: 5261 on 5890 Progress: 5262 on 5890 Progress: 5263 on 5890 Progress: 5264 on 5890 Progress: 5265 on 5890 Progress: 5266 on 5890 Progress: 5267 on 5890 Progress: 5268 on 5890 Progress: 5269 on 5890 Progress: 5270 on 5890 Progress: 5271 on 5890 Progress: 5272 on 5890 Progress: 5273 on 5890 Progress: 5274 on 5890 Progress: 5275 on 5890 Progress: 5276 on 5890 Progress: 5277 on 5890 Progress: 5278 on 5890 Progress: 5279 on 5890 Progress: 5280 on 5890 Progress: 5281 on 5890 Progress: 5282 on 5890 Progress: 5283 on 5890 Progress: 5284 on 5890 Progress: 5285 on 5890 Progress: 5286 on 5890 Progress: 5287 on 5890 Progress: 5288 on 5890 Progress: 5289 on 5890 Progress: 5290 on 5890 Progress: 5291 on 5890 Progress: 5292 on 5890 Progress: 5293 on 5890 Progress: 5294 on 5890 Progress: 5295 on 5890 Progress: 5296 on 5890 Progress: 5297 on 5890 Progress: 5298 on 5890 Progress: 5299 on 5890 Progress: 5300 on 5890 Progress: 5301 on 5890 Progress: 5302 on 5890 Progress: 5303 on 5890 Progress: 5304 on 5890 Progress: 5305 on 5890 Progress: 5306 on 5890 Progress: 5307 on 5890 Progress: 5308 on 5890 Progress: 5309 on 5890 Progress: 5310 on 5890 Progress: 5311 on 5890 Progress: 5312 on 5890 Progress: 5313 on 5890 Progress: 5314 on 5890 Progress: 5315 on 5890 Progress: 5316 on 5890 Progress: 5317 on 5890 Progress: 5318 on 5890 Progress: 5319 on 5890 Progress: 5320 on 5890 Progress: 5321 on 5890 Progress: 5322 on 5890 Progress: 5323 on 5890 Progress: 5324 on 5890 Progress: 5325 on 5890 Progress: 5326 on 5890 Progress: 5327 on 5890 Progress: 5328 on 5890 Progress: 5329 on 5890 Progress: 5330 on 5890 Progress: 5331 on 5890 Progress: 5332 on 5890 Progress: 5333 on 5890 Progress: 5334 on 5890 Progress: 5335 on 5890 Progress: 5336 on 5890 Progress: 5337 on 5890 Progress: 5338 on 5890 Progress: 5339 on 5890 Progress: 5340 on 5890 Progress: 5341 on 5890 Progress: 5342 on 5890 Progress: 5343 on 5890 Progress: 5344 on 5890 Progress: 5345 on 5890 Progress: 5346 on 5890 Progress: 5347 on 5890 Progress: 5348 on 5890 Progress: 5349 on 5890 Progress: 5350 on 5890 Progress: 5351 on 5890 Progress: 5352 on 5890 Progress: 5353 on 5890 Progress: 5354 on 5890 Progress: 5355 on 5890 Progress: 5356 on 5890 Progress: 5357 on 5890 Progress: 5358 on 5890 Progress: 5359 on 5890 Progress: 5360 on 5890 Progress: 5361 on 5890 Progress: 5362 on 5890 Progress: 5363 on 5890 Progress: 5364 on 5890 Progress: 5365 on 5890 Progress: 5366 on 5890 Progress: 5367 on 5890 Progress: 5368 on 5890 Progress: 5369 on 5890 Progress: 5370 on 5890 Progress: 5371 on 5890 Progress: 5372 on 5890 Progress: 5373 on 5890 Progress: 5374 on 5890 Progress: 5375 on 5890 Progress: 5376 on 5890 Progress: 5377 on 5890 Progress: 5378 on 5890 Progress: 5379 on 5890 Progress: 5380 on 5890 Progress: 5381 on 5890 Progress: 5382 on 5890 Progress: 5383 on 5890 Progress: 5384 on 5890 Progress: 5385 on 5890 Progress: 5386 on 5890 Progress: 5387 on 5890 Progress: 5388 on 5890 Progress: 5389 on 5890 Progress: 5390 on 5890 Progress: 5391 on 5890 Progress: 5392 on 5890 Progress: 5393 on 5890 Progress: 5394 on 5890 Progress: 5395 on 5890 Progress: 5396 on 5890 Progress: 5397 on 5890 Progress: 5398 on 5890 Progress: 5399 on 5890 Progress: 5400 on 5890 Progress: 5401 on 5890 Progress: 5402 on 5890 Progress: 5403 on 5890 Progress: 5404 on 5890 Progress: 5405 on 5890 Progress: 5406 on 5890 Progress: 5407 on 5890 Progress: 5408 on 5890 Progress: 5409 on 5890 Progress: 5410 on 5890 Progress: 5411 on 5890 Progress: 5412 on 5890 Progress: 5413 on 5890 Progress: 5414 on 5890 Progress: 5415 on 5890 Progress: 5416 on 5890 Progress: 5417 on 5890 Progress: 5418 on 5890 Progress: 5419 on 5890 Progress: 5420 on 5890 Progress: 5421 on 5890 Progress: 5422 on 5890 Progress: 5423 on 5890 Progress: 5424 on 5890 Progress: 5425 on 5890 Progress: 5426 on 5890 Progress: 5427 on 5890 Progress: 5428 on 5890 Progress: 5429 on 5890 Progress: 5430 on 5890 Progress: 5431 on 5890 Progress: 5432 on 5890 Progress: 5433 on 5890 Progress: 5434 on 5890 Progress: 5435 on 5890 Progress: 5436 on 5890 Progress: 5437 on 5890 Progress: 5438 on 5890 Progress: 5439 on 5890 Progress: 5440 on 5890 Progress: 5441 on 5890 Progress: 5442 on 5890 Progress: 5443 on 5890 Progress: 5444 on 5890 Progress: 5445 on 5890 Progress: 5446 on 5890 Progress: 5447 on 5890 Progress: 5448 on 5890 Progress: 5449 on 5890 Progress: 5450 on 5890 Progress: 5451 on 5890 Progress: 5452 on 5890 Progress: 5453 on 5890 Progress: 5454 on 5890 Progress: 5455 on 5890 Progress: 5456 on 5890 Progress: 5457 on 5890 Progress: 5458 on 5890 Progress: 5459 on 5890 Progress: 5460 on 5890 Progress: 5461 on 5890 Progress: 5462 on 5890 Progress: 5463 on 5890 Progress: 5464 on 5890 Progress: 5465 on 5890 Progress: 5466 on 5890 Progress: 5467 on 5890 Progress: 5468 on 5890 Progress: 5469 on 5890 Progress: 5470 on 5890 Progress: 5471 on 5890 Progress: 5472 on 5890 Progress: 5473 on 5890 Progress: 5474 on 5890 Progress: 5475 on 5890 Progress: 5476 on 5890 Progress: 5477 on 5890 Progress: 5478 on 5890 Progress: 5479 on 5890 Progress: 5480 on 5890 Progress: 5481 on 5890 Progress: 5482 on 5890 Progress: 5483 on 5890 Progress: 5484 on 5890 Progress: 5485 on 5890 Progress: 5486 on 5890 Progress: 5487 on 5890 Progress: 5488 on 5890 Progress: 5489 on 5890 Progress: 5490 on 5890 Progress: 5491 on 5890 Progress: 5492 on 5890 Progress: 5493 on 5890 Progress: 5494 on 5890 Progress: 5495 on 5890 Progress: 5496 on 5890 Progress: 5497 on 5890 Progress: 5498 on 5890 Progress: 5499 on 5890 Progress: 5500 on 5890 Progress: 5501 on 5890 Progress: 5502 on 5890 Progress: 5503 on 5890 Progress: 5504 on 5890 Progress: 5505 on 5890 Progress: 5506 on 5890 Progress: 5507 on 5890 Progress: 5508 on 5890 Progress: 5509 on 5890 Progress: 5510 on 5890 Progress: 5511 on 5890 Progress: 5512 on 5890 Progress: 5513 on 5890 Progress: 5514 on 5890 Progress: 5515 on 5890 Progress: 5516 on 5890 Progress: 5517 on 5890 Progress: 5518 on 5890 Progress: 5519 on 5890 Progress: 5520 on 5890 Progress: 5521 on 5890 Progress: 5522 on 5890 Progress: 5523 on 5890 Progress: 5524 on 5890 Progress: 5525 on 5890 Progress: 5526 on 5890 Progress: 5527 on 5890 Progress: 5528 on 5890 Progress: 5529 on 5890 Progress: 5530 on 5890 Progress: 5531 on 5890 Progress: 5532 on 5890 Progress: 5533 on 5890 Progress: 5534 on 5890 Progress: 5535 on 5890 Progress: 5536 on 5890 Progress: 5537 on 5890 Progress: 5538 on 5890 Progress: 5539 on 5890 Progress: 5540 on 5890 Progress: 5541 on 5890 Progress: 5542 on 5890 Progress: 5543 on 5890 Progress: 5544 on 5890 Progress: 5545 on 5890 Progress: 5546 on 5890 Progress: 5547 on 5890 Progress: 5548 on 5890 Progress: 5549 on 5890 Progress: 5550 on 5890 Progress: 5551 on 5890 Progress: 5552 on 5890 Progress: 5553 on 5890 Progress: 5554 on 5890 Progress: 5555 on 5890 Progress: 5556 on 5890 Progress: 5557 on 5890 Progress: 5558 on 5890 Progress: 5559 on 5890 Progress: 5560 on 5890 Progress: 5561 on 5890 Progress: 5562 on 5890 Progress: 5563 on 5890 Progress: 5564 on 5890 Progress: 5565 on 5890 Progress: 5566 on 5890 Progress: 5567 on 5890 Progress: 5568 on 5890 Progress: 5569 on 5890 Progress: 5570 on 5890 Progress: 5571 on 5890 Progress: 5572 on 5890 Progress: 5573 on 5890 Progress: 5574 on 5890 Progress: 5575 on 5890 Progress: 5576 on 5890 Progress: 5577 on 5890 Progress: 5578 on 5890 Progress: 5579 on 5890 Progress: 5580 on 5890 Progress: 5581 on 5890 Progress: 5582 on 5890 Progress: 5583 on 5890 Progress: 5584 on 5890 Progress: 5585 on 5890 Progress: 5586 on 5890 Progress: 5587 on 5890 Progress: 5588 on 5890 Progress: 5589 on 5890 Progress: 5590 on 5890 Progress: 5591 on 5890 Progress: 5592 on 5890 Progress: 5593 on 5890 Progress: 5594 on 5890 Progress: 5595 on 5890 Progress: 5596 on 5890 Progress: 5597 on 5890 Progress: 5598 on 5890 Progress: 5599 on 5890 Progress: 5600 on 5890 Progress: 5601 on 5890 Progress: 5602 on 5890 Progress: 5603 on 5890 Progress: 5604 on 5890 Progress: 5605 on 5890 Progress: 5606 on 5890 Progress: 5607 on 5890 Progress: 5608 on 5890 Progress: 5609 on 5890 Progress: 5610 on 5890 Progress: 5611 on 5890 Progress: 5612 on 5890 Progress: 5613 on 5890 Progress: 5614 on 5890 Progress: 5615 on 5890 Progress: 5616 on 5890 Progress: 5617 on 5890 Progress: 5618 on 5890 Progress: 5619 on 5890 Progress: 5620 on 5890 Progress: 5621 on 5890 Progress: 5622 on 5890 Progress: 5623 on 5890 Progress: 5624 on 5890 Progress: 5625 on 5890 Progress: 5626 on 5890 Progress: 5627 on 5890 Progress: 5628 on 5890 Progress: 5629 on 5890 Progress: 5630 on 5890 Progress: 5631 on 5890 Progress: 5632 on 5890 Progress: 5633 on 5890 Progress: 5634 on 5890 Progress: 5635 on 5890 Progress: 5636 on 5890 Progress: 5637 on 5890 Progress: 5638 on 5890 Progress: 5639 on 5890 Progress: 5640 on 5890 Progress: 5641 on 5890 Progress: 5642 on 5890 Progress: 5643 on 5890 Progress: 5644 on 5890 Progress: 5645 on 5890 Progress: 5646 on 5890 Progress: 5647 on 5890 Progress: 5648 on 5890 Progress: 5649 on 5890 Progress: 5650 on 5890 Progress: 5651 on 5890 Progress: 5652 on 5890 Progress: 5653 on 5890 Progress: 5654 on 5890 Progress: 5655 on 5890 Progress: 5656 on 5890 Progress: 5657 on 5890 Progress: 5658 on 5890 Progress: 5659 on 5890 Progress: 5660 on 5890 Progress: 5661 on 5890 Progress: 5662 on 5890 Progress: 5663 on 5890 Progress: 5664 on 5890 Progress: 5665 on 5890 Progress: 5666 on 5890 Progress: 5667 on 5890 Progress: 5668 on 5890 Progress: 5669 on 5890 Progress: 5670 on 5890 Progress: 5671 on 5890 Progress: 5672 on 5890 Progress: 5673 on 5890 Progress: 5674 on 5890 Progress: 5675 on 5890 Progress: 5676 on 5890 Progress: 5677 on 5890 Progress: 5678 on 5890 Progress: 5679 on 5890 Progress: 5680 on 5890 Progress: 5681 on 5890 Progress: 5682 on 5890 Progress: 5683 on 5890 Progress: 5684 on 5890 Progress: 5685 on 5890 Progress: 5686 on 5890 Progress: 5687 on 5890 Progress: 5688 on 5890 Progress: 5689 on 5890 Progress: 5690 on 5890 Progress: 5691 on 5890 Progress: 5692 on 5890 Progress: 5693 on 5890 Progress: 5694 on 5890 Progress: 5695 on 5890 Progress: 5696 on 5890 Progress: 5697 on 5890 Progress: 5698 on 5890 Progress: 5699 on 5890 Progress: 5700 on 5890 Progress: 5701 on 5890 Progress: 5702 on 5890 Progress: 5703 on 5890 Progress: 5704 on 5890 Progress: 5705 on 5890 Progress: 5706 on 5890 Progress: 5707 on 5890 Progress: 5708 on 5890 Progress: 5709 on 5890 Progress: 5710 on 5890 Progress: 5711 on 5890 Progress: 5712 on 5890 Progress: 5713 on 5890 Progress: 5714 on 5890 Progress: 5715 on 5890 Progress: 5716 on 5890 Progress: 5717 on 5890 Progress: 5718 on 5890 Progress: 5719 on 5890 Progress: 5720 on 5890 Progress: 5721 on 5890 Progress: 5722 on 5890 Progress: 5723 on 5890 Progress: 5724 on 5890 Progress: 5725 on 5890 Progress: 5726 on 5890 Progress: 5727 on 5890 Progress: 5728 on 5890 Progress: 5729 on 5890 Progress: 5730 on 5890 Progress: 5731 on 5890 Progress: 5732 on 5890 Progress: 5733 on 5890 Progress: 5734 on 5890 Progress: 5735 on 5890 Progress: 5736 on 5890 Progress: 5737 on 5890 Progress: 5738 on 5890 Progress: 5739 on 5890 Progress: 5740 on 5890 Progress: 5741 on 5890 Progress: 5742 on 5890 Progress: 5743 on 5890 Progress: 5744 on 5890 Progress: 5745 on 5890 Progress: 5746 on 5890 Progress: 5747 on 5890 Progress: 5748 on 5890 Progress: 5749 on 5890 Progress: 5750 on 5890 Progress: 5751 on 5890 Progress: 5752 on 5890 Progress: 5753 on 5890 Progress: 5754 on 5890 Progress: 5755 on 5890 Progress: 5756 on 5890 Progress: 5757 on 5890 Progress: 5758 on 5890 Progress: 5759 on 5890 Progress: 5760 on 5890 Progress: 5761 on 5890 Progress: 5762 on 5890 Progress: 5763 on 5890 Progress: 5764 on 5890 Progress: 5765 on 5890 Progress: 5766 on 5890 Progress: 5767 on 5890 Progress: 5768 on 5890 Progress: 5769 on 5890 Progress: 5770 on 5890 Progress: 5771 on 5890 Progress: 5772 on 5890 Progress: 5773 on 5890 Progress: 5774 on 5890 Progress: 5775 on 5890 Progress: 5776 on 5890 Progress: 5777 on 5890 Progress: 5778 on 5890 Progress: 5779 on 5890 Progress: 5780 on 5890 Progress: 5781 on 5890 Progress: 5782 on 5890 Progress: 5783 on 5890 Progress: 5784 on 5890 Progress: 5785 on 5890 Progress: 5786 on 5890 Progress: 5787 on 5890 Progress: 5788 on 5890 Progress: 5789 on 5890 Progress: 5790 on 5890 Progress: 5791 on 5890 Progress: 5792 on 5890 Progress: 5793 on 5890 Progress: 5794 on 5890 Progress: 5795 on 5890 Progress: 5796 on 5890 Progress: 5797 on 5890 Progress: 5798 on 5890 Progress: 5799 on 5890 Progress: 5800 on 5890 Progress: 5801 on 5890 Progress: 5802 on 5890 Progress: 5803 on 5890 Progress: 5804 on 5890 Progress: 5805 on 5890 Progress: 5806 on 5890 Progress: 5807 on 5890 Progress: 5808 on 5890 Progress: 5809 on 5890 Progress: 5810 on 5890 Progress: 5811 on 5890 Progress: 5812 on 5890 Progress: 5813 on 5890 Progress: 5814 on 5890 Progress: 5815 on 5890 Progress: 5816 on 5890 Progress: 5817 on 5890 Progress: 5818 on 5890 Progress: 5819 on 5890 Progress: 5820 on 5890 Progress: 5821 on 5890 Progress: 5822 on 5890 Progress: 5823 on 5890 Progress: 5824 on 5890 Progress: 5825 on 5890 Progress: 5826 on 5890 Progress: 5827 on 5890 Progress: 5828 on 5890 Progress: 5829 on 5890 Progress: 5830 on 5890 Progress: 5831 on 5890 Progress: 5832 on 5890 Progress: 5833 on 5890 Progress: 5834 on 5890 Progress: 5835 on 5890 Progress: 5836 on 5890 Progress: 5837 on 5890 Progress: 5838 on 5890 Progress: 5839 on 5890 Progress: 5840 on 5890 Progress: 5841 on 5890 Progress: 5842 on 5890 Progress: 5843 on 5890 Progress: 5844 on 5890 Progress: 5845 on 5890 Progress: 5846 on 5890 Progress: 5847 on 5890 Progress: 5848 on 5890 Progress: 5849 on 5890 Progress: 5850 on 5890 Progress: 5851 on 5890 Progress: 5852 on 5890 Progress: 5853 on 5890 Progress: 5854 on 5890 Progress: 5855 on 5890 Progress: 5856 on 5890 Progress: 5857 on 5890 Progress: 5858 on 5890 Progress: 5859 on 5890 Progress: 5860 on 5890 Progress: 5861 on 5890 Progress: 5862 on 5890 Progress: 5863 on 5890 Progress: 5864 on 5890 Progress: 5865 on 5890 Progress: 5866 on 5890 Progress: 5867 on 5890 Progress: 5868 on 5890 Progress: 5869 on 5890 Progress: 5870 on 5890 Progress: 5871 on 5890 Progress: 5872 on 5890 Progress: 5873 on 5890 Progress: 5874 on 5890 Progress: 5875 on 5890 Progress: 5876 on 5890 Progress: 5877 on 5890 Progress: 5878 on 5890 Progress: 5879 on 5890 Progress: 5880 on 5890 Progress: 5881 on 5890 Progress: 5882 on 5890 Progress: 5883 on 5890 Progress: 5884 on 5890 Progress: 5885 on 5890 Progress: 5886 on 5890 Progress: 5887 on 5890 Progress: 5888 on 5890 Progress: 5889 on 5890 Progress: 5890 on 5890
BN_wspoltworca <- BN_wspoltworca %>%
mutate(ZA_ADNOTACJE = ifelse(czy_nazwisko==FALSE|czy_imie==FALSE,paste("UWAGA! Konflikt w danych osobowych w polach 700 i 245. Porównaj pola współtórców w formularzu z polem BN: ",X245c,sep = ""),NA)) %>%
select(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,OS_OSOBA_ID,fo_symbol,fo_nazwa,funkcja,ZA_ADNOTACJE)
#7: opis współtwórców
opis_wspoltworcow <- BN_wspoltworca %>%
select(ZA_UWAGI,funkcja,OS_IMIE,OS_NAZWISKO) %>%
full_join(.,marc_field_245,by="ZA_UWAGI") %>%
filter(!is.na(OS_NAZWISKO)|(is.na(OS_NAZWISKO)&grepl("et al\\.",X245c))) %>%
mutate(jest_et_al = grepl("et al\\.",X245c),
OS_IMIE = ifelse(OS_IMIE=="*","",as.character(OS_IMIE)),
opis = ifelse(!is.na(OS_NAZWISKO),paste(funkcja,OS_IMIE, OS_NAZWISKO, sep = " "),""),
opis = str_replace_all(opis," +"," "),
opis = ifelse(opis==" ","",as.character(opis))) %>%
select(ZA_UWAGI,opis,jest_et_al) %>%
group_by(ZA_UWAGI) %>%
mutate(opis = paste(opis,collapse = ", "),
jest_et_al = paste(unique(jest_et_al),sep = "")) %>%
ungroup() %>%
unique() %>%
mutate(opis = ifelse(jest_et_al==TRUE&opis=="","et al.",
ifelse(jest_et_al,paste(opis,"et al.",sep = " "),opis))) %>%
select(ZA_UWAGI,opis)
#700
marc_field_700 <- data %>%
select(ZA_UWAGI,X700)%>%
filter(X700!="") %>%
mutate(X700=str_replace_all(X700,"(..\\$a)","|\\1"),
X700=str_replace_all(X700,"(^|\\|)","~\\1")) %>%
cSplit(.,"X700",sep = "~",direction = "long") %>%
filter(X700!="") %>%
mutate(X700=str_remove_all(X700,"^\\|")) %>%
mutate(indicator = str_replace_all(X700,"(^.*?)(\\$.*)","\\1")) %>%
filter(X700!="")
subfield_list<- str_extract_all(data$X700,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_700)[1]))
colnames(empty_table) <-subfield_list
marc_field_700<-cbind(marc_field_700,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_700$X700 <- str_replace(marc_field_700$X700,subfield_list_char[i],"|\\1")
}
Progress: 1 on 10 Progress: 2 on 10 Progress: 3 on 10 Progress: 4 on 10 Progress: 5 on 10 Progress: 6 on 10 Progress: 7 on 10 Progress: 8 on 10 Progress: 9 on 10 Progress: 10 on 10
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_700[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_700$X700),str_replace_all(gsub(string,"\\3",marc_field_700$X700),"\\${2}.", "~"),NA)
}
Progress: 1 on 10 Progress: 2 on 10 Progress: 3 on 10 Progress: 4 on 10 Progress: 5 on 10 Progress: 6 on 10 Progress: 7 on 10 Progress: 8 on 10 Progress: 9 on 10 Progress: 10 on 10
marc_field_700 <- marc_field_700 %>%
select(ZA_UWAGI,osoba = `$a`,funkcja = `$e`) %>%
filter(!is.na(funkcja)) %>%
mutate(osoba = str_remove(osoba,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)"),
OS_NAZWISKO = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\1"),as.character(osoba)),
OS_IMIE = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\3"),"*"),
funkcja_duza = str_to_lower(funkcja),
opis = paste(funkcja_duza,OS_IMIE,OS_NAZWISKO, sep = " "),
opis_duzy = paste(funkcja,OS_IMIE,OS_NAZWISKO, sep = " ")) %>%
select(ZA_UWAGI,opis,opis_duzy) %>%
group_by(ZA_UWAGI) %>%
mutate(opis = paste(opis,collapse = ". "),
opis_duzy = paste(opis_duzy,collapse = ". ")) %>%
ungroup() %>%
unique()
#opis współtwórców ze strefy odpowiedzialności 245
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,`$c`)
#porównanie opisu współtwórców z 245 i 700
wspoltworcy <- marc_field_700 %>%
full_join(.,marc_field_245,by="ZA_UWAGI") %>%
cSplit(.,"$c",sep = " ; ",direction = "long") %>%
#ograniczanie osób ze strefy odpowiedzialności
mutate(czy_mala = grepl(" [a-zęóąśłżźćń]|^[a-zęóąśłżźćń]|\\[[a-zęóąśłżźćń]",`$c`,ignore.case = FALSE)) %>%
filter(czy_mala==TRUE) %>%
select(-czy_mala) %>%
#mutate(`$c` = gsub("^(\\[){0,1}([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])","\\1\\U\\2",perl = TRUE,`$c`)) %>%
group_by(ZA_UWAGI) %>%
mutate(X245 = paste(`$c`, collapse = ", ")) %>%
select(-`$c`) %>%
unique() %>%
mutate(order_pbl = as.character(str_extract_all(opis,"(?<=^| |\\[|-)([A-ZAÁÀÂÃÄĂĀÅĄÆEÉÈÊËĚĒĖĘIÍÌÎÏĪĮIOÓÒÔÕÖŐØŒUÚÙÛÜŰŪůYÝCĆČçDĎĐĐGĢĞKĶLŁĻNŃÑŇŅŊRŘSŚŠŞSßTŤŦÞŢ8ZŻŹŽa-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])")),
order_pbl = str_replace_all(order_pbl,"(.*?\")(.)(\".*?.)", "\\2"),
order_bn = as.character(str_extract_all(X245,"(?<=^| |\\[|-)([A-ZAÁÀÂÃÄĂĀÅĄÆEÉÈÊËĚĒĖĘIÍÌÎÏĪĮIOÓÒÔÕÖŐØŒUÚÙÛÜŰŪůYÝCĆČçDĎĐĐGĢĞKĶLŁĻNŃÑŇŅŊRŘSŚŠŞSßTŤŦÞŢ8ZŻŹŽa-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])")),
order_bn = str_replace_all(order_bn,"(.*?\")(.)(\".*?.)", "\\2"),
X245 = str_remove(X245, "\\.$"),
X245 = str_remove(X245, "\\["),
X245 = str_remove(X245, "\\]"),
order_pbl = str_remove_all(order_pbl, "[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]"),
order_bn = str_remove_all(order_bn, "[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]"),
to_samo = order_pbl==order_bn,
X245 = gsub("(^[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(.*)","\\U\\1\\E\\2",perl = TRUE, X245)) %>%
left_join(.,za_jezyk_oryginalu,by="ZA_UWAGI") %>%
mutate(czy_pl = grepl("pol",ZA_JEZYK_ORYGINALU)|is.na(ZA_JEZYK_ORYGINALU),
decyzja = ifelse(to_samo==FALSE|czy_pl==FALSE,FALSE,TRUE))
za_opis_wspoltworcow <- wspoltworcy %>%
mutate(za_opis_wspoltworcow = ifelse(decyzja==TRUE,as.character(X245),paste(X245,opis_duzy,sep = "#"))) %>%
select(ZA_UWAGI,opis_duzy,za_opis_wspoltworcow) %>%
cSplit(.,"za_opis_wspoltworcow",sep = "#",direction = "wide") %>%
mutate(za_opis_wspoltworcow_2 = ifelse(is.na(za_opis_wspoltworcow_2),'',as.character(za_opis_wspoltworcow_2)),
to_samo = za_opis_wspoltworcow_1==za_opis_wspoltworcow_2) %>%
filter(to_samo==FALSE) %>%
group_by(ZA_UWAGI) %>%
mutate(za_opis_wspoltworcow = paste(za_opis_wspoltworcow_1,za_opis_wspoltworcow_2,sep = "#"),
za_opis_wspoltworcow = str_remove_all(za_opis_wspoltworcow,"\\#$")) %>%
select(ZA_UWAGI,za_opis_wspoltworcow)
opis_wspoltworcow <- opis_wspoltworcow %>%
filter(ZA_UWAGI %notin% za_opis_wspoltworcow$ZA_UWAGI) %>%
filter(!is.na(opis)) %>%
rename(za_opis_wspoltworcow = opis)
za_opis_wspoltworcow <- za_opis_wspoltworcow %>%
bind_rows(.,opis_wspoltworcow) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#8 wydanie
marc_field_250 <- data %>%
select(ZA_UWAGI,X250)%>%
filter(X250!="") %>%
mutate(X250=str_replace_all(X250,"(^|\\|)","~\\1")) %>%
cSplit(.,"X250",sep = "~",direction = "long") %>%
filter(X250!="") %>%
mutate(X250=str_remove_all(X250,"^\\|")) %>%
mutate(indicator = str_replace_all(X250,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X250,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_250)[1]))
colnames(empty_table) <-subfield_list
marc_field_250<-cbind(marc_field_250,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_250$X250 <- str_replace(marc_field_250$X250,subfield_list_char[i],"|\\1")
}
Progress: 1 on 2 Progress: 2 on 2
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_250[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_250$X250),str_replace_all(gsub(string,"\\3",marc_field_250$X250),"\\${2}.", "~"),NA)
}
Progress: 1 on 2 Progress: 2 on 2
za_wydanie <- marc_field_250 %>%
select(ZA_UWAGI, wydanie = `$a`) %>%
mutate(wydanie = str_remove(wydanie," \\/$")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#9: instytucja sprawcza
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
za_instytucja <- marc_field_245 %>%
select(ZA_UWAGI,X245c=`$c`) %>%
filter(!is.na(X245c)) %>%
mutate(instytucja = ifelse(grepl("\\;",X245c),str_replace_all(X245c, "(.*?)(\\;(?!.*\\;))( )+(.*?$)","\\4"),"")) %>%
left_join(.,BN_wspoltworca,by="ZA_UWAGI")
x <- 1:lengths(za_instytucja[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
za_instytucja$czy_nazwisko[i] <- grepl(za_instytucja$OS_NAZWISKO[i],za_instytucja$X245c[i])
za_instytucja$czy_imie[i] <- grepl(za_instytucja$OS_IMIE[i],za_instytucja$X245c[i])
}
Progress: 1 on 8876 Progress: 2 on 8876 Progress: 3 on 8876 Progress: 4 on 8876 Progress: 5 on 8876 Progress: 6 on 8876 Progress: 7 on 8876 Progress: 8 on 8876 Progress: 9 on 8876 Progress: 10 on 8876 Progress: 11 on 8876 Progress: 12 on 8876 Progress: 13 on 8876 Progress: 14 on 8876 Progress: 15 on 8876 Progress: 16 on 8876 Progress: 17 on 8876 Progress: 18 on 8876 Progress: 19 on 8876 Progress: 20 on 8876 Progress: 21 on 8876 Progress: 22 on 8876 Progress: 23 on 8876 Progress: 24 on 8876 Progress: 25 on 8876 Progress: 26 on 8876 Progress: 27 on 8876 Progress: 28 on 8876 Progress: 29 on 8876 Progress: 30 on 8876 Progress: 31 on 8876 Progress: 32 on 8876 Progress: 33 on 8876 Progress: 34 on 8876 Progress: 35 on 8876 Progress: 36 on 8876 Progress: 37 on 8876 Progress: 38 on 8876 Progress: 39 on 8876 Progress: 40 on 8876 Progress: 41 on 8876 Progress: 42 on 8876 Progress: 43 on 8876 Progress: 44 on 8876 Progress: 45 on 8876 Progress: 46 on 8876 Progress: 47 on 8876 Progress: 48 on 8876 Progress: 49 on 8876 Progress: 50 on 8876 Progress: 51 on 8876 Progress: 52 on 8876 Progress: 53 on 8876 Progress: 54 on 8876 Progress: 55 on 8876 Progress: 56 on 8876 Progress: 57 on 8876 Progress: 58 on 8876 Progress: 59 on 8876 Progress: 60 on 8876 Progress: 61 on 8876 Progress: 62 on 8876 Progress: 63 on 8876 Progress: 64 on 8876 Progress: 65 on 8876 Progress: 66 on 8876 Progress: 67 on 8876 Progress: 68 on 8876 Progress: 69 on 8876 Progress: 70 on 8876 Progress: 71 on 8876 Progress: 72 on 8876 Progress: 73 on 8876 Progress: 74 on 8876 Progress: 75 on 8876 Progress: 76 on 8876 Progress: 77 on 8876 Progress: 78 on 8876 Progress: 79 on 8876 Progress: 80 on 8876 Progress: 81 on 8876 Progress: 82 on 8876 Progress: 83 on 8876 Progress: 84 on 8876 Progress: 85 on 8876 Progress: 86 on 8876 Progress: 87 on 8876 Progress: 88 on 8876 Progress: 89 on 8876 Progress: 90 on 8876 Progress: 91 on 8876 Progress: 92 on 8876 Progress: 93 on 8876 Progress: 94 on 8876 Progress: 95 on 8876 Progress: 96 on 8876 Progress: 97 on 8876 Progress: 98 on 8876 Progress: 99 on 8876 Progress: 100 on 8876 Progress: 101 on 8876 Progress: 102 on 8876 Progress: 103 on 8876 Progress: 104 on 8876 Progress: 105 on 8876 Progress: 106 on 8876 Progress: 107 on 8876 Progress: 108 on 8876 Progress: 109 on 8876 Progress: 110 on 8876 Progress: 111 on 8876 Progress: 112 on 8876 Progress: 113 on 8876 Progress: 114 on 8876 Progress: 115 on 8876 Progress: 116 on 8876 Progress: 117 on 8876 Progress: 118 on 8876 Progress: 119 on 8876 Progress: 120 on 8876 Progress: 121 on 8876 Progress: 122 on 8876 Progress: 123 on 8876 Progress: 124 on 8876 Progress: 125 on 8876 Progress: 126 on 8876 Progress: 127 on 8876 Progress: 128 on 8876 Progress: 129 on 8876 Progress: 130 on 8876 Progress: 131 on 8876 Progress: 132 on 8876 Progress: 133 on 8876 Progress: 134 on 8876 Progress: 135 on 8876 Progress: 136 on 8876 Progress: 137 on 8876 Progress: 138 on 8876 Progress: 139 on 8876 Progress: 140 on 8876 Progress: 141 on 8876 Progress: 142 on 8876 Progress: 143 on 8876 Progress: 144 on 8876 Progress: 145 on 8876 Progress: 146 on 8876 Progress: 147 on 8876 Progress: 148 on 8876 Progress: 149 on 8876 Progress: 150 on 8876 Progress: 151 on 8876 Progress: 152 on 8876 Progress: 153 on 8876 Progress: 154 on 8876 Progress: 155 on 8876 Progress: 156 on 8876 Progress: 157 on 8876 Progress: 158 on 8876 Progress: 159 on 8876 Progress: 160 on 8876 Progress: 161 on 8876 Progress: 162 on 8876 Progress: 163 on 8876 Progress: 164 on 8876 Progress: 165 on 8876 Progress: 166 on 8876 Progress: 167 on 8876 Progress: 168 on 8876 Progress: 169 on 8876 Progress: 170 on 8876 Progress: 171 on 8876 Progress: 172 on 8876 Progress: 173 on 8876 Progress: 174 on 8876 Progress: 175 on 8876 Progress: 176 on 8876 Progress: 177 on 8876 Progress: 178 on 8876 Progress: 179 on 8876 Progress: 180 on 8876 Progress: 181 on 8876 Progress: 182 on 8876 Progress: 183 on 8876 Progress: 184 on 8876 Progress: 185 on 8876 Progress: 186 on 8876 Progress: 187 on 8876 Progress: 188 on 8876 Progress: 189 on 8876 Progress: 190 on 8876 Progress: 191 on 8876 Progress: 192 on 8876 Progress: 193 on 8876 Progress: 194 on 8876 Progress: 195 on 8876 Progress: 196 on 8876 Progress: 197 on 8876 Progress: 198 on 8876 Progress: 199 on 8876 Progress: 200 on 8876 Progress: 201 on 8876 Progress: 202 on 8876 Progress: 203 on 8876 Progress: 204 on 8876 Progress: 205 on 8876 Progress: 206 on 8876 Progress: 207 on 8876 Progress: 208 on 8876 Progress: 209 on 8876 Progress: 210 on 8876 Progress: 211 on 8876 Progress: 212 on 8876 Progress: 213 on 8876 Progress: 214 on 8876 Progress: 215 on 8876 Progress: 216 on 8876 Progress: 217 on 8876 Progress: 218 on 8876 Progress: 219 on 8876 Progress: 220 on 8876 Progress: 221 on 8876 Progress: 222 on 8876 Progress: 223 on 8876 Progress: 224 on 8876 Progress: 225 on 8876 Progress: 226 on 8876 Progress: 227 on 8876 Progress: 228 on 8876 Progress: 229 on 8876 Progress: 230 on 8876 Progress: 231 on 8876 Progress: 232 on 8876 Progress: 233 on 8876 Progress: 234 on 8876 Progress: 235 on 8876 Progress: 236 on 8876 Progress: 237 on 8876 Progress: 238 on 8876 Progress: 239 on 8876 Progress: 240 on 8876 Progress: 241 on 8876 Progress: 242 on 8876 Progress: 243 on 8876 Progress: 244 on 8876 Progress: 245 on 8876 Progress: 246 on 8876 Progress: 247 on 8876 Progress: 248 on 8876 Progress: 249 on 8876 Progress: 250 on 8876 Progress: 251 on 8876 Progress: 252 on 8876 Progress: 253 on 8876 Progress: 254 on 8876 Progress: 255 on 8876 Progress: 256 on 8876 Progress: 257 on 8876 Progress: 258 on 8876 Progress: 259 on 8876 Progress: 260 on 8876 Progress: 261 on 8876 Progress: 262 on 8876 Progress: 263 on 8876 Progress: 264 on 8876 Progress: 265 on 8876 Progress: 266 on 8876 Progress: 267 on 8876 Progress: 268 on 8876 Progress: 269 on 8876 Progress: 270 on 8876 Progress: 271 on 8876 Progress: 272 on 8876 Progress: 273 on 8876 Progress: 274 on 8876 Progress: 275 on 8876 Progress: 276 on 8876 Progress: 277 on 8876 Progress: 278 on 8876 Progress: 279 on 8876 Progress: 280 on 8876 Progress: 281 on 8876 Progress: 282 on 8876 Progress: 283 on 8876 Progress: 284 on 8876 Progress: 285 on 8876 Progress: 286 on 8876 Progress: 287 on 8876 Progress: 288 on 8876 Progress: 289 on 8876 Progress: 290 on 8876 Progress: 291 on 8876 Progress: 292 on 8876 Progress: 293 on 8876 Progress: 294 on 8876 Progress: 295 on 8876 Progress: 296 on 8876 Progress: 297 on 8876 Progress: 298 on 8876 Progress: 299 on 8876 Progress: 300 on 8876 Progress: 301 on 8876 Progress: 302 on 8876 Progress: 303 on 8876 Progress: 304 on 8876 Progress: 305 on 8876 Progress: 306 on 8876 Progress: 307 on 8876 Progress: 308 on 8876 Progress: 309 on 8876 Progress: 310 on 8876 Progress: 311 on 8876 Progress: 312 on 8876 Progress: 313 on 8876 Progress: 314 on 8876 Progress: 315 on 8876 Progress: 316 on 8876 Progress: 317 on 8876 Progress: 318 on 8876 Progress: 319 on 8876 Progress: 320 on 8876 Progress: 321 on 8876 Progress: 322 on 8876 Progress: 323 on 8876 Progress: 324 on 8876 Progress: 325 on 8876 Progress: 326 on 8876 Progress: 327 on 8876 Progress: 328 on 8876 Progress: 329 on 8876 Progress: 330 on 8876 Progress: 331 on 8876 Progress: 332 on 8876 Progress: 333 on 8876 Progress: 334 on 8876 Progress: 335 on 8876 Progress: 336 on 8876 Progress: 337 on 8876 Progress: 338 on 8876 Progress: 339 on 8876 Progress: 340 on 8876 Progress: 341 on 8876 Progress: 342 on 8876 Progress: 343 on 8876 Progress: 344 on 8876 Progress: 345 on 8876 Progress: 346 on 8876 Progress: 347 on 8876 Progress: 348 on 8876 Progress: 349 on 8876 Progress: 350 on 8876 Progress: 351 on 8876 Progress: 352 on 8876 Progress: 353 on 8876 Progress: 354 on 8876 Progress: 355 on 8876 Progress: 356 on 8876 Progress: 357 on 8876 Progress: 358 on 8876 Progress: 359 on 8876 Progress: 360 on 8876 Progress: 361 on 8876 Progress: 362 on 8876 Progress: 363 on 8876 Progress: 364 on 8876 Progress: 365 on 8876 Progress: 366 on 8876 Progress: 367 on 8876 Progress: 368 on 8876 Progress: 369 on 8876 Progress: 370 on 8876 Progress: 371 on 8876 Progress: 372 on 8876 Progress: 373 on 8876 Progress: 374 on 8876 Progress: 375 on 8876 Progress: 376 on 8876 Progress: 377 on 8876 Progress: 378 on 8876 Progress: 379 on 8876 Progress: 380 on 8876 Progress: 381 on 8876 Progress: 382 on 8876 Progress: 383 on 8876 Progress: 384 on 8876 Progress: 385 on 8876 Progress: 386 on 8876 Progress: 387 on 8876 Progress: 388 on 8876 Progress: 389 on 8876 Progress: 390 on 8876 Progress: 391 on 8876 Progress: 392 on 8876 Progress: 393 on 8876 Progress: 394 on 8876 Progress: 395 on 8876 Progress: 396 on 8876 Progress: 397 on 8876 Progress: 398 on 8876 Progress: 399 on 8876 Progress: 400 on 8876 Progress: 401 on 8876 Progress: 402 on 8876 Progress: 403 on 8876 Progress: 404 on 8876 Progress: 405 on 8876 Progress: 406 on 8876 Progress: 407 on 8876 Progress: 408 on 8876 Progress: 409 on 8876 Progress: 410 on 8876 Progress: 411 on 8876 Progress: 412 on 8876 Progress: 413 on 8876 Progress: 414 on 8876 Progress: 415 on 8876 Progress: 416 on 8876 Progress: 417 on 8876 Progress: 418 on 8876 Progress: 419 on 8876 Progress: 420 on 8876 Progress: 421 on 8876 Progress: 422 on 8876 Progress: 423 on 8876 Progress: 424 on 8876 Progress: 425 on 8876 Progress: 426 on 8876 Progress: 427 on 8876 Progress: 428 on 8876 Progress: 429 on 8876 Progress: 430 on 8876 Progress: 431 on 8876 Progress: 432 on 8876 Progress: 433 on 8876 Progress: 434 on 8876 Progress: 435 on 8876 Progress: 436 on 8876 Progress: 437 on 8876 Progress: 438 on 8876 Progress: 439 on 8876 Progress: 440 on 8876 Progress: 441 on 8876 Progress: 442 on 8876 Progress: 443 on 8876 Progress: 444 on 8876 Progress: 445 on 8876 Progress: 446 on 8876 Progress: 447 on 8876 Progress: 448 on 8876 Progress: 449 on 8876 Progress: 450 on 8876 Progress: 451 on 8876 Progress: 452 on 8876 Progress: 453 on 8876 Progress: 454 on 8876 Progress: 455 on 8876 Progress: 456 on 8876 Progress: 457 on 8876 Progress: 458 on 8876 Progress: 459 on 8876 Progress: 460 on 8876 Progress: 461 on 8876 Progress: 462 on 8876 Progress: 463 on 8876 Progress: 464 on 8876 Progress: 465 on 8876 Progress: 466 on 8876 Progress: 467 on 8876 Progress: 468 on 8876 Progress: 469 on 8876 Progress: 470 on 8876 Progress: 471 on 8876 Progress: 472 on 8876 Progress: 473 on 8876 Progress: 474 on 8876 Progress: 475 on 8876 Progress: 476 on 8876 Progress: 477 on 8876 Progress: 478 on 8876 Progress: 479 on 8876 Progress: 480 on 8876 Progress: 481 on 8876 Progress: 482 on 8876 Progress: 483 on 8876 Progress: 484 on 8876 Progress: 485 on 8876 Progress: 486 on 8876 Progress: 487 on 8876 Progress: 488 on 8876 Progress: 489 on 8876 Progress: 490 on 8876 Progress: 491 on 8876 Progress: 492 on 8876 Progress: 493 on 8876 Progress: 494 on 8876 Progress: 495 on 8876 Progress: 496 on 8876 Progress: 497 on 8876 Progress: 498 on 8876 Progress: 499 on 8876 Progress: 500 on 8876 Progress: 501 on 8876 Progress: 502 on 8876 Progress: 503 on 8876 Progress: 504 on 8876 Progress: 505 on 8876 Progress: 506 on 8876 Progress: 507 on 8876 Progress: 508 on 8876 Progress: 509 on 8876 Progress: 510 on 8876 Progress: 511 on 8876 Progress: 512 on 8876 Progress: 513 on 8876 Progress: 514 on 8876 Progress: 515 on 8876 Progress: 516 on 8876 Progress: 517 on 8876 Progress: 518 on 8876 Progress: 519 on 8876 Progress: 520 on 8876 Progress: 521 on 8876 Progress: 522 on 8876 Progress: 523 on 8876 Progress: 524 on 8876 Progress: 525 on 8876 Progress: 526 on 8876 Progress: 527 on 8876 Progress: 528 on 8876 Progress: 529 on 8876 Progress: 530 on 8876 Progress: 531 on 8876 Progress: 532 on 8876 Progress: 533 on 8876 Progress: 534 on 8876 Progress: 535 on 8876 Progress: 536 on 8876 Progress: 537 on 8876 Progress: 538 on 8876 Progress: 539 on 8876 Progress: 540 on 8876 Progress: 541 on 8876 Progress: 542 on 8876 Progress: 543 on 8876 Progress: 544 on 8876 Progress: 545 on 8876 Progress: 546 on 8876 Progress: 547 on 8876 Progress: 548 on 8876 Progress: 549 on 8876 Progress: 550 on 8876 Progress: 551 on 8876 Progress: 552 on 8876 Progress: 553 on 8876 Progress: 554 on 8876 Progress: 555 on 8876 Progress: 556 on 8876 Progress: 557 on 8876 Progress: 558 on 8876 Progress: 559 on 8876 Progress: 560 on 8876 Progress: 561 on 8876 Progress: 562 on 8876 Progress: 563 on 8876 Progress: 564 on 8876 Progress: 565 on 8876 Progress: 566 on 8876 Progress: 567 on 8876 Progress: 568 on 8876 Progress: 569 on 8876 Progress: 570 on 8876 Progress: 571 on 8876 Progress: 572 on 8876 Progress: 573 on 8876 Progress: 574 on 8876 Progress: 575 on 8876 Progress: 576 on 8876 Progress: 577 on 8876 Progress: 578 on 8876 Progress: 579 on 8876 Progress: 580 on 8876 Progress: 581 on 8876 Progress: 582 on 8876 Progress: 583 on 8876 Progress: 584 on 8876 Progress: 585 on 8876 Progress: 586 on 8876 Progress: 587 on 8876 Progress: 588 on 8876 Progress: 589 on 8876 Progress: 590 on 8876 Progress: 591 on 8876 Progress: 592 on 8876 Progress: 593 on 8876 Progress: 594 on 8876 Progress: 595 on 8876 Progress: 596 on 8876 Progress: 597 on 8876 Progress: 598 on 8876 Progress: 599 on 8876 Progress: 600 on 8876 Progress: 601 on 8876 Progress: 602 on 8876 Progress: 603 on 8876 Progress: 604 on 8876 Progress: 605 on 8876 Progress: 606 on 8876 Progress: 607 on 8876 Progress: 608 on 8876 Progress: 609 on 8876 Progress: 610 on 8876 Progress: 611 on 8876 Progress: 612 on 8876 Progress: 613 on 8876 Progress: 614 on 8876 Progress: 615 on 8876 Progress: 616 on 8876 Progress: 617 on 8876 Progress: 618 on 8876 Progress: 619 on 8876 Progress: 620 on 8876 Progress: 621 on 8876 Progress: 622 on 8876 Progress: 623 on 8876 Progress: 624 on 8876 Progress: 625 on 8876 Progress: 626 on 8876 Progress: 627 on 8876 Progress: 628 on 8876 Progress: 629 on 8876 Progress: 630 on 8876 Progress: 631 on 8876 Progress: 632 on 8876 Progress: 633 on 8876 Progress: 634 on 8876 Progress: 635 on 8876 Progress: 636 on 8876 Progress: 637 on 8876 Progress: 638 on 8876 Progress: 639 on 8876 Progress: 640 on 8876 Progress: 641 on 8876 Progress: 642 on 8876 Progress: 643 on 8876 Progress: 644 on 8876 Progress: 645 on 8876 Progress: 646 on 8876 Progress: 647 on 8876 Progress: 648 on 8876 Progress: 649 on 8876 Progress: 650 on 8876 Progress: 651 on 8876 Progress: 652 on 8876 Progress: 653 on 8876 Progress: 654 on 8876 Progress: 655 on 8876 Progress: 656 on 8876 Progress: 657 on 8876 Progress: 658 on 8876 Progress: 659 on 8876 Progress: 660 on 8876 Progress: 661 on 8876 Progress: 662 on 8876 Progress: 663 on 8876 Progress: 664 on 8876 Progress: 665 on 8876 Progress: 666 on 8876 Progress: 667 on 8876 Progress: 668 on 8876 Progress: 669 on 8876 Progress: 670 on 8876 Progress: 671 on 8876 Progress: 672 on 8876 Progress: 673 on 8876 Progress: 674 on 8876 Progress: 675 on 8876 Progress: 676 on 8876 Progress: 677 on 8876 Progress: 678 on 8876 Progress: 679 on 8876 Progress: 680 on 8876 Progress: 681 on 8876 Progress: 682 on 8876 Progress: 683 on 8876 Progress: 684 on 8876 Progress: 685 on 8876 Progress: 686 on 8876 Progress: 687 on 8876 Progress: 688 on 8876 Progress: 689 on 8876 Progress: 690 on 8876 Progress: 691 on 8876 Progress: 692 on 8876 Progress: 693 on 8876 Progress: 694 on 8876 Progress: 695 on 8876 Progress: 696 on 8876 Progress: 697 on 8876 Progress: 698 on 8876 Progress: 699 on 8876 Progress: 700 on 8876 Progress: 701 on 8876 Progress: 702 on 8876 Progress: 703 on 8876 Progress: 704 on 8876 Progress: 705 on 8876 Progress: 706 on 8876 Progress: 707 on 8876 Progress: 708 on 8876 Progress: 709 on 8876 Progress: 710 on 8876 Progress: 711 on 8876 Progress: 712 on 8876 Progress: 713 on 8876 Progress: 714 on 8876 Progress: 715 on 8876 Progress: 716 on 8876 Progress: 717 on 8876 Progress: 718 on 8876 Progress: 719 on 8876 Progress: 720 on 8876 Progress: 721 on 8876 Progress: 722 on 8876 Progress: 723 on 8876 Progress: 724 on 8876 Progress: 725 on 8876 Progress: 726 on 8876 Progress: 727 on 8876 Progress: 728 on 8876 Progress: 729 on 8876 Progress: 730 on 8876 Progress: 731 on 8876 Progress: 732 on 8876 Progress: 733 on 8876 Progress: 734 on 8876 Progress: 735 on 8876 Progress: 736 on 8876 Progress: 737 on 8876 Progress: 738 on 8876 Progress: 739 on 8876 Progress: 740 on 8876 Progress: 741 on 8876 Progress: 742 on 8876 Progress: 743 on 8876 Progress: 744 on 8876 Progress: 745 on 8876 Progress: 746 on 8876 Progress: 747 on 8876 Progress: 748 on 8876 Progress: 749 on 8876 Progress: 750 on 8876 Progress: 751 on 8876 Progress: 752 on 8876 Progress: 753 on 8876 Progress: 754 on 8876 Progress: 755 on 8876 Progress: 756 on 8876 Progress: 757 on 8876 Progress: 758 on 8876 Progress: 759 on 8876 Progress: 760 on 8876 Progress: 761 on 8876 Progress: 762 on 8876 Progress: 763 on 8876 Progress: 764 on 8876 Progress: 765 on 8876 Progress: 766 on 8876 Progress: 767 on 8876 Progress: 768 on 8876 Progress: 769 on 8876 Progress: 770 on 8876 Progress: 771 on 8876 Progress: 772 on 8876 Progress: 773 on 8876 Progress: 774 on 8876 Progress: 775 on 8876 Progress: 776 on 8876 Progress: 777 on 8876 Progress: 778 on 8876 Progress: 779 on 8876 Progress: 780 on 8876 Progress: 781 on 8876 Progress: 782 on 8876 Progress: 783 on 8876 Progress: 784 on 8876 Progress: 785 on 8876 Progress: 786 on 8876 Progress: 787 on 8876 Progress: 788 on 8876 Progress: 789 on 8876 Progress: 790 on 8876 Progress: 791 on 8876 Progress: 792 on 8876 Progress: 793 on 8876 Progress: 794 on 8876 Progress: 795 on 8876 Progress: 796 on 8876 Progress: 797 on 8876 Progress: 798 on 8876 Progress: 799 on 8876 Progress: 800 on 8876 Progress: 801 on 8876 Progress: 802 on 8876 Progress: 803 on 8876 Progress: 804 on 8876 Progress: 805 on 8876 Progress: 806 on 8876 Progress: 807 on 8876 Progress: 808 on 8876 Progress: 809 on 8876 Progress: 810 on 8876 Progress: 811 on 8876 Progress: 812 on 8876 Progress: 813 on 8876 Progress: 814 on 8876 Progress: 815 on 8876 Progress: 816 on 8876 Progress: 817 on 8876 Progress: 818 on 8876 Progress: 819 on 8876 Progress: 820 on 8876 Progress: 821 on 8876 Progress: 822 on 8876 Progress: 823 on 8876 Progress: 824 on 8876 Progress: 825 on 8876 Progress: 826 on 8876 Progress: 827 on 8876 Progress: 828 on 8876 Progress: 829 on 8876 Progress: 830 on 8876 Progress: 831 on 8876 Progress: 832 on 8876 Progress: 833 on 8876 Progress: 834 on 8876 Progress: 835 on 8876 Progress: 836 on 8876 Progress: 837 on 8876 Progress: 838 on 8876 Progress: 839 on 8876 Progress: 840 on 8876 Progress: 841 on 8876 Progress: 842 on 8876 Progress: 843 on 8876 Progress: 844 on 8876 Progress: 845 on 8876 Progress: 846 on 8876 Progress: 847 on 8876 Progress: 848 on 8876 Progress: 849 on 8876 Progress: 850 on 8876 Progress: 851 on 8876 Progress: 852 on 8876 Progress: 853 on 8876 Progress: 854 on 8876 Progress: 855 on 8876 Progress: 856 on 8876 Progress: 857 on 8876 Progress: 858 on 8876 Progress: 859 on 8876 Progress: 860 on 8876 Progress: 861 on 8876 Progress: 862 on 8876 Progress: 863 on 8876 Progress: 864 on 8876 Progress: 865 on 8876 Progress: 866 on 8876 Progress: 867 on 8876 Progress: 868 on 8876 Progress: 869 on 8876 Progress: 870 on 8876 Progress: 871 on 8876 Progress: 872 on 8876 Progress: 873 on 8876 Progress: 874 on 8876 Progress: 875 on 8876 Progress: 876 on 8876 Progress: 877 on 8876 Progress: 878 on 8876 Progress: 879 on 8876 Progress: 880 on 8876 Progress: 881 on 8876 Progress: 882 on 8876 Progress: 883 on 8876 Progress: 884 on 8876 Progress: 885 on 8876 Progress: 886 on 8876 Progress: 887 on 8876 Progress: 888 on 8876 Progress: 889 on 8876 Progress: 890 on 8876 Progress: 891 on 8876 Progress: 892 on 8876 Progress: 893 on 8876 Progress: 894 on 8876 Progress: 895 on 8876 Progress: 896 on 8876 Progress: 897 on 8876 Progress: 898 on 8876 Progress: 899 on 8876 Progress: 900 on 8876 Progress: 901 on 8876 Progress: 902 on 8876 Progress: 903 on 8876 Progress: 904 on 8876 Progress: 905 on 8876 Progress: 906 on 8876 Progress: 907 on 8876 Progress: 908 on 8876 Progress: 909 on 8876 Progress: 910 on 8876 Progress: 911 on 8876 Progress: 912 on 8876 Progress: 913 on 8876 Progress: 914 on 8876 Progress: 915 on 8876 Progress: 916 on 8876 Progress: 917 on 8876 Progress: 918 on 8876 Progress: 919 on 8876 Progress: 920 on 8876 Progress: 921 on 8876 Progress: 922 on 8876 Progress: 923 on 8876 Progress: 924 on 8876 Progress: 925 on 8876 Progress: 926 on 8876 Progress: 927 on 8876 Progress: 928 on 8876 Progress: 929 on 8876 Progress: 930 on 8876 Progress: 931 on 8876 Progress: 932 on 8876 Progress: 933 on 8876 Progress: 934 on 8876 Progress: 935 on 8876 Progress: 936 on 8876 Progress: 937 on 8876 Progress: 938 on 8876 Progress: 939 on 8876 Progress: 940 on 8876 Progress: 941 on 8876 Progress: 942 on 8876 Progress: 943 on 8876 Progress: 944 on 8876 Progress: 945 on 8876 Progress: 946 on 8876 Progress: 947 on 8876 Progress: 948 on 8876 Progress: 949 on 8876 Progress: 950 on 8876 Progress: 951 on 8876 Progress: 952 on 8876 Progress: 953 on 8876 Progress: 954 on 8876 Progress: 955 on 8876 Progress: 956 on 8876 Progress: 957 on 8876 Progress: 958 on 8876 Progress: 959 on 8876 Progress: 960 on 8876 Progress: 961 on 8876 Progress: 962 on 8876 Progress: 963 on 8876 Progress: 964 on 8876 Progress: 965 on 8876 Progress: 966 on 8876 Progress: 967 on 8876 Progress: 968 on 8876 Progress: 969 on 8876 Progress: 970 on 8876 Progress: 971 on 8876 Progress: 972 on 8876 Progress: 973 on 8876 Progress: 974 on 8876 Progress: 975 on 8876 Progress: 976 on 8876 Progress: 977 on 8876 Progress: 978 on 8876 Progress: 979 on 8876 Progress: 980 on 8876 Progress: 981 on 8876 Progress: 982 on 8876 Progress: 983 on 8876 Progress: 984 on 8876 Progress: 985 on 8876 Progress: 986 on 8876 Progress: 987 on 8876 Progress: 988 on 8876 Progress: 989 on 8876 Progress: 990 on 8876 Progress: 991 on 8876 Progress: 992 on 8876 Progress: 993 on 8876 Progress: 994 on 8876 Progress: 995 on 8876 Progress: 996 on 8876 Progress: 997 on 8876 Progress: 998 on 8876 Progress: 999 on 8876 Progress: 1000 on 8876 Progress: 1001 on 8876 Progress: 1002 on 8876 Progress: 1003 on 8876 Progress: 1004 on 8876 Progress: 1005 on 8876 Progress: 1006 on 8876 Progress: 1007 on 8876 Progress: 1008 on 8876 Progress: 1009 on 8876 Progress: 1010 on 8876 Progress: 1011 on 8876 Progress: 1012 on 8876 Progress: 1013 on 8876 Progress: 1014 on 8876 Progress: 1015 on 8876 Progress: 1016 on 8876 Progress: 1017 on 8876 Progress: 1018 on 8876 Progress: 1019 on 8876 Progress: 1020 on 8876 Progress: 1021 on 8876 Progress: 1022 on 8876 Progress: 1023 on 8876 Progress: 1024 on 8876 Progress: 1025 on 8876 Progress: 1026 on 8876 Progress: 1027 on 8876 Progress: 1028 on 8876 Progress: 1029 on 8876 Progress: 1030 on 8876 Progress: 1031 on 8876 Progress: 1032 on 8876 Progress: 1033 on 8876 Progress: 1034 on 8876 Progress: 1035 on 8876 Progress: 1036 on 8876 Progress: 1037 on 8876 Progress: 1038 on 8876 Progress: 1039 on 8876 Progress: 1040 on 8876 Progress: 1041 on 8876 Progress: 1042 on 8876 Progress: 1043 on 8876 Progress: 1044 on 8876 Progress: 1045 on 8876 Progress: 1046 on 8876 Progress: 1047 on 8876 Progress: 1048 on 8876 Progress: 1049 on 8876 Progress: 1050 on 8876 Progress: 1051 on 8876 Progress: 1052 on 8876 Progress: 1053 on 8876 Progress: 1054 on 8876 Progress: 1055 on 8876 Progress: 1056 on 8876 Progress: 1057 on 8876 Progress: 1058 on 8876 Progress: 1059 on 8876 Progress: 1060 on 8876 Progress: 1061 on 8876 Progress: 1062 on 8876 Progress: 1063 on 8876 Progress: 1064 on 8876 Progress: 1065 on 8876 Progress: 1066 on 8876 Progress: 1067 on 8876 Progress: 1068 on 8876 Progress: 1069 on 8876 Progress: 1070 on 8876 Progress: 1071 on 8876 Progress: 1072 on 8876 Progress: 1073 on 8876 Progress: 1074 on 8876 Progress: 1075 on 8876 Progress: 1076 on 8876 Progress: 1077 on 8876 Progress: 1078 on 8876 Progress: 1079 on 8876 Progress: 1080 on 8876 Progress: 1081 on 8876 Progress: 1082 on 8876 Progress: 1083 on 8876 Progress: 1084 on 8876 Progress: 1085 on 8876 Progress: 1086 on 8876 Progress: 1087 on 8876 Progress: 1088 on 8876 Progress: 1089 on 8876 Progress: 1090 on 8876 Progress: 1091 on 8876 Progress: 1092 on 8876 Progress: 1093 on 8876 Progress: 1094 on 8876 Progress: 1095 on 8876 Progress: 1096 on 8876 Progress: 1097 on 8876 Progress: 1098 on 8876 Progress: 1099 on 8876 Progress: 1100 on 8876 Progress: 1101 on 8876 Progress: 1102 on 8876 Progress: 1103 on 8876 Progress: 1104 on 8876 Progress: 1105 on 8876 Progress: 1106 on 8876 Progress: 1107 on 8876 Progress: 1108 on 8876 Progress: 1109 on 8876 Progress: 1110 on 8876 Progress: 1111 on 8876 Progress: 1112 on 8876 Progress: 1113 on 8876 Progress: 1114 on 8876 Progress: 1115 on 8876 Progress: 1116 on 8876 Progress: 1117 on 8876 Progress: 1118 on 8876 Progress: 1119 on 8876 Progress: 1120 on 8876 Progress: 1121 on 8876 Progress: 1122 on 8876 Progress: 1123 on 8876 Progress: 1124 on 8876 Progress: 1125 on 8876 Progress: 1126 on 8876 Progress: 1127 on 8876 Progress: 1128 on 8876 Progress: 1129 on 8876 Progress: 1130 on 8876 Progress: 1131 on 8876 Progress: 1132 on 8876 Progress: 1133 on 8876 Progress: 1134 on 8876 Progress: 1135 on 8876 Progress: 1136 on 8876 Progress: 1137 on 8876 Progress: 1138 on 8876 Progress: 1139 on 8876 Progress: 1140 on 8876 Progress: 1141 on 8876 Progress: 1142 on 8876 Progress: 1143 on 8876 Progress: 1144 on 8876 Progress: 1145 on 8876 Progress: 1146 on 8876 Progress: 1147 on 8876 Progress: 1148 on 8876 Progress: 1149 on 8876 Progress: 1150 on 8876 Progress: 1151 on 8876 Progress: 1152 on 8876 Progress: 1153 on 8876 Progress: 1154 on 8876 Progress: 1155 on 8876 Progress: 1156 on 8876 Progress: 1157 on 8876 Progress: 1158 on 8876 Progress: 1159 on 8876 Progress: 1160 on 8876 Progress: 1161 on 8876 Progress: 1162 on 8876 Progress: 1163 on 8876 Progress: 1164 on 8876 Progress: 1165 on 8876 Progress: 1166 on 8876 Progress: 1167 on 8876 Progress: 1168 on 8876 Progress: 1169 on 8876 Progress: 1170 on 8876 Progress: 1171 on 8876 Progress: 1172 on 8876 Progress: 1173 on 8876 Progress: 1174 on 8876 Progress: 1175 on 8876 Progress: 1176 on 8876 Progress: 1177 on 8876 Progress: 1178 on 8876 Progress: 1179 on 8876 Progress: 1180 on 8876 Progress: 1181 on 8876 Progress: 1182 on 8876 Progress: 1183 on 8876 Progress: 1184 on 8876 Progress: 1185 on 8876 Progress: 1186 on 8876 Progress: 1187 on 8876 Progress: 1188 on 8876 Progress: 1189 on 8876 Progress: 1190 on 8876 Progress: 1191 on 8876 Progress: 1192 on 8876 Progress: 1193 on 8876 Progress: 1194 on 8876 Progress: 1195 on 8876 Progress: 1196 on 8876 Progress: 1197 on 8876 Progress: 1198 on 8876 Progress: 1199 on 8876 Progress: 1200 on 8876 Progress: 1201 on 8876 Progress: 1202 on 8876 Progress: 1203 on 8876 Progress: 1204 on 8876 Progress: 1205 on 8876 Progress: 1206 on 8876 Progress: 1207 on 8876 Progress: 1208 on 8876 Progress: 1209 on 8876 Progress: 1210 on 8876 Progress: 1211 on 8876 Progress: 1212 on 8876 Progress: 1213 on 8876 Progress: 1214 on 8876 Progress: 1215 on 8876 Progress: 1216 on 8876 Progress: 1217 on 8876 Progress: 1218 on 8876 Progress: 1219 on 8876 Progress: 1220 on 8876 Progress: 1221 on 8876 Progress: 1222 on 8876 Progress: 1223 on 8876 Progress: 1224 on 8876 Progress: 1225 on 8876 Progress: 1226 on 8876 Progress: 1227 on 8876 Progress: 1228 on 8876 Progress: 1229 on 8876 Progress: 1230 on 8876 Progress: 1231 on 8876 Progress: 1232 on 8876 Progress: 1233 on 8876 Progress: 1234 on 8876 Progress: 1235 on 8876 Progress: 1236 on 8876 Progress: 1237 on 8876 Progress: 1238 on 8876 Progress: 1239 on 8876 Progress: 1240 on 8876 Progress: 1241 on 8876 Progress: 1242 on 8876 Progress: 1243 on 8876 Progress: 1244 on 8876 Progress: 1245 on 8876 Progress: 1246 on 8876 Progress: 1247 on 8876 Progress: 1248 on 8876 Progress: 1249 on 8876 Progress: 1250 on 8876 Progress: 1251 on 8876 Progress: 1252 on 8876 Progress: 1253 on 8876 Progress: 1254 on 8876 Progress: 1255 on 8876 Progress: 1256 on 8876 Progress: 1257 on 8876 Progress: 1258 on 8876 Progress: 1259 on 8876 Progress: 1260 on 8876 Progress: 1261 on 8876 Progress: 1262 on 8876 Progress: 1263 on 8876 Progress: 1264 on 8876 Progress: 1265 on 8876 Progress: 1266 on 8876 Progress: 1267 on 8876 Progress: 1268 on 8876 Progress: 1269 on 8876 Progress: 1270 on 8876 Progress: 1271 on 8876 Progress: 1272 on 8876 Progress: 1273 on 8876 Progress: 1274 on 8876 Progress: 1275 on 8876 Progress: 1276 on 8876 Progress: 1277 on 8876 Progress: 1278 on 8876 Progress: 1279 on 8876 Progress: 1280 on 8876 Progress: 1281 on 8876 Progress: 1282 on 8876 Progress: 1283 on 8876 Progress: 1284 on 8876 Progress: 1285 on 8876 Progress: 1286 on 8876 Progress: 1287 on 8876 Progress: 1288 on 8876 Progress: 1289 on 8876 Progress: 1290 on 8876 Progress: 1291 on 8876 Progress: 1292 on 8876 Progress: 1293 on 8876 Progress: 1294 on 8876 Progress: 1295 on 8876 Progress: 1296 on 8876 Progress: 1297 on 8876 Progress: 1298 on 8876 Progress: 1299 on 8876 Progress: 1300 on 8876 Progress: 1301 on 8876 Progress: 1302 on 8876 Progress: 1303 on 8876 Progress: 1304 on 8876 Progress: 1305 on 8876 Progress: 1306 on 8876 Progress: 1307 on 8876 Progress: 1308 on 8876 Progress: 1309 on 8876 Progress: 1310 on 8876 Progress: 1311 on 8876 Progress: 1312 on 8876 Progress: 1313 on 8876 Progress: 1314 on 8876 Progress: 1315 on 8876 Progress: 1316 on 8876 Progress: 1317 on 8876 Progress: 1318 on 8876 Progress: 1319 on 8876 Progress: 1320 on 8876 Progress: 1321 on 8876 Progress: 1322 on 8876 Progress: 1323 on 8876 Progress: 1324 on 8876 Progress: 1325 on 8876 Progress: 1326 on 8876 Progress: 1327 on 8876 Progress: 1328 on 8876 Progress: 1329 on 8876 Progress: 1330 on 8876 Progress: 1331 on 8876 Progress: 1332 on 8876 Progress: 1333 on 8876 Progress: 1334 on 8876 Progress: 1335 on 8876 Progress: 1336 on 8876 Progress: 1337 on 8876 Progress: 1338 on 8876 Progress: 1339 on 8876 Progress: 1340 on 8876 Progress: 1341 on 8876 Progress: 1342 on 8876 Progress: 1343 on 8876 Progress: 1344 on 8876 Progress: 1345 on 8876 Progress: 1346 on 8876 Progress: 1347 on 8876 Progress: 1348 on 8876 Progress: 1349 on 8876 Progress: 1350 on 8876 Progress: 1351 on 8876 Progress: 1352 on 8876 Progress: 1353 on 8876 Progress: 1354 on 8876 Progress: 1355 on 8876 Progress: 1356 on 8876 Progress: 1357 on 8876 Progress: 1358 on 8876 Progress: 1359 on 8876 Progress: 1360 on 8876 Progress: 1361 on 8876 Progress: 1362 on 8876 Progress: 1363 on 8876 Progress: 1364 on 8876 Progress: 1365 on 8876 Progress: 1366 on 8876 Progress: 1367 on 8876 Progress: 1368 on 8876 Progress: 1369 on 8876 Progress: 1370 on 8876 Progress: 1371 on 8876 Progress: 1372 on 8876 Progress: 1373 on 8876 Progress: 1374 on 8876 Progress: 1375 on 8876 Progress: 1376 on 8876 Progress: 1377 on 8876 Progress: 1378 on 8876 Progress: 1379 on 8876 Progress: 1380 on 8876 Progress: 1381 on 8876 Progress: 1382 on 8876 Progress: 1383 on 8876 Progress: 1384 on 8876 Progress: 1385 on 8876 Progress: 1386 on 8876 Progress: 1387 on 8876 Progress: 1388 on 8876 Progress: 1389 on 8876 Progress: 1390 on 8876 Progress: 1391 on 8876 Progress: 1392 on 8876 Progress: 1393 on 8876 Progress: 1394 on 8876 Progress: 1395 on 8876 Progress: 1396 on 8876 Progress: 1397 on 8876 Progress: 1398 on 8876 Progress: 1399 on 8876 Progress: 1400 on 8876 Progress: 1401 on 8876 Progress: 1402 on 8876 Progress: 1403 on 8876 Progress: 1404 on 8876 Progress: 1405 on 8876 Progress: 1406 on 8876 Progress: 1407 on 8876 Progress: 1408 on 8876 Progress: 1409 on 8876 Progress: 1410 on 8876 Progress: 1411 on 8876 Progress: 1412 on 8876 Progress: 1413 on 8876 Progress: 1414 on 8876 Progress: 1415 on 8876 Progress: 1416 on 8876 Progress: 1417 on 8876 Progress: 1418 on 8876 Progress: 1419 on 8876 Progress: 1420 on 8876 Progress: 1421 on 8876 Progress: 1422 on 8876 Progress: 1423 on 8876 Progress: 1424 on 8876 Progress: 1425 on 8876 Progress: 1426 on 8876 Progress: 1427 on 8876 Progress: 1428 on 8876 Progress: 1429 on 8876 Progress: 1430 on 8876 Progress: 1431 on 8876 Progress: 1432 on 8876 Progress: 1433 on 8876 Progress: 1434 on 8876 Progress: 1435 on 8876 Progress: 1436 on 8876 Progress: 1437 on 8876 Progress: 1438 on 8876 Progress: 1439 on 8876 Progress: 1440 on 8876 Progress: 1441 on 8876 Progress: 1442 on 8876 Progress: 1443 on 8876 Progress: 1444 on 8876 Progress: 1445 on 8876 Progress: 1446 on 8876 Progress: 1447 on 8876 Progress: 1448 on 8876 Progress: 1449 on 8876 Progress: 1450 on 8876 Progress: 1451 on 8876 Progress: 1452 on 8876 Progress: 1453 on 8876 Progress: 1454 on 8876 Progress: 1455 on 8876 Progress: 1456 on 8876 Progress: 1457 on 8876 Progress: 1458 on 8876 Progress: 1459 on 8876 Progress: 1460 on 8876 Progress: 1461 on 8876 Progress: 1462 on 8876 Progress: 1463 on 8876 Progress: 1464 on 8876 Progress: 1465 on 8876 Progress: 1466 on 8876 Progress: 1467 on 8876 Progress: 1468 on 8876 Progress: 1469 on 8876 Progress: 1470 on 8876 Progress: 1471 on 8876 Progress: 1472 on 8876 Progress: 1473 on 8876 Progress: 1474 on 8876 Progress: 1475 on 8876 Progress: 1476 on 8876 Progress: 1477 on 8876 Progress: 1478 on 8876 Progress: 1479 on 8876 Progress: 1480 on 8876 Progress: 1481 on 8876 Progress: 1482 on 8876 Progress: 1483 on 8876 Progress: 1484 on 8876 Progress: 1485 on 8876 Progress: 1486 on 8876 Progress: 1487 on 8876 Progress: 1488 on 8876 Progress: 1489 on 8876 Progress: 1490 on 8876 Progress: 1491 on 8876 Progress: 1492 on 8876 Progress: 1493 on 8876 Progress: 1494 on 8876 Progress: 1495 on 8876 Progress: 1496 on 8876 Progress: 1497 on 8876 Progress: 1498 on 8876 Progress: 1499 on 8876 Progress: 1500 on 8876 Progress: 1501 on 8876 Progress: 1502 on 8876 Progress: 1503 on 8876 Progress: 1504 on 8876 Progress: 1505 on 8876 Progress: 1506 on 8876 Progress: 1507 on 8876 Progress: 1508 on 8876 Progress: 1509 on 8876 Progress: 1510 on 8876 Progress: 1511 on 8876 Progress: 1512 on 8876 Progress: 1513 on 8876 Progress: 1514 on 8876 Progress: 1515 on 8876 Progress: 1516 on 8876 Progress: 1517 on 8876 Progress: 1518 on 8876 Progress: 1519 on 8876 Progress: 1520 on 8876 Progress: 1521 on 8876 Progress: 1522 on 8876 Progress: 1523 on 8876 Progress: 1524 on 8876 Progress: 1525 on 8876 Progress: 1526 on 8876 Progress: 1527 on 8876 Progress: 1528 on 8876 Progress: 1529 on 8876 Progress: 1530 on 8876 Progress: 1531 on 8876 Progress: 1532 on 8876 Progress: 1533 on 8876 Progress: 1534 on 8876 Progress: 1535 on 8876 Progress: 1536 on 8876 Progress: 1537 on 8876 Progress: 1538 on 8876 Progress: 1539 on 8876 Progress: 1540 on 8876 Progress: 1541 on 8876 Progress: 1542 on 8876 Progress: 1543 on 8876 Progress: 1544 on 8876 Progress: 1545 on 8876 Progress: 1546 on 8876 Progress: 1547 on 8876 Progress: 1548 on 8876 Progress: 1549 on 8876 Progress: 1550 on 8876 Progress: 1551 on 8876 Progress: 1552 on 8876 Progress: 1553 on 8876 Progress: 1554 on 8876 Progress: 1555 on 8876 Progress: 1556 on 8876 Progress: 1557 on 8876 Progress: 1558 on 8876 Progress: 1559 on 8876 Progress: 1560 on 8876 Progress: 1561 on 8876 Progress: 1562 on 8876 Progress: 1563 on 8876 Progress: 1564 on 8876 Progress: 1565 on 8876 Progress: 1566 on 8876 Progress: 1567 on 8876 Progress: 1568 on 8876 Progress: 1569 on 8876 Progress: 1570 on 8876 Progress: 1571 on 8876 Progress: 1572 on 8876 Progress: 1573 on 8876 Progress: 1574 on 8876 Progress: 1575 on 8876 Progress: 1576 on 8876 Progress: 1577 on 8876 Progress: 1578 on 8876 Progress: 1579 on 8876 Progress: 1580 on 8876 Progress: 1581 on 8876 Progress: 1582 on 8876 Progress: 1583 on 8876 Progress: 1584 on 8876 Progress: 1585 on 8876 Progress: 1586 on 8876 Progress: 1587 on 8876 Progress: 1588 on 8876 Progress: 1589 on 8876 Progress: 1590 on 8876 Progress: 1591 on 8876 Progress: 1592 on 8876 Progress: 1593 on 8876 Progress: 1594 on 8876 Progress: 1595 on 8876 Progress: 1596 on 8876 Progress: 1597 on 8876 Progress: 1598 on 8876 Progress: 1599 on 8876 Progress: 1600 on 8876 Progress: 1601 on 8876 Progress: 1602 on 8876 Progress: 1603 on 8876 Progress: 1604 on 8876 Progress: 1605 on 8876 Progress: 1606 on 8876 Progress: 1607 on 8876 Progress: 1608 on 8876 Progress: 1609 on 8876 Progress: 1610 on 8876 Progress: 1611 on 8876 Progress: 1612 on 8876 Progress: 1613 on 8876 Progress: 1614 on 8876 Progress: 1615 on 8876 Progress: 1616 on 8876 Progress: 1617 on 8876 Progress: 1618 on 8876 Progress: 1619 on 8876 Progress: 1620 on 8876 Progress: 1621 on 8876 Progress: 1622 on 8876 Progress: 1623 on 8876 Progress: 1624 on 8876 Progress: 1625 on 8876 Progress: 1626 on 8876 Progress: 1627 on 8876 Progress: 1628 on 8876 Progress: 1629 on 8876 Progress: 1630 on 8876 Progress: 1631 on 8876 Progress: 1632 on 8876 Progress: 1633 on 8876 Progress: 1634 on 8876 Progress: 1635 on 8876 Progress: 1636 on 8876 Progress: 1637 on 8876 Progress: 1638 on 8876 Progress: 1639 on 8876 Progress: 1640 on 8876 Progress: 1641 on 8876 Progress: 1642 on 8876 Progress: 1643 on 8876 Progress: 1644 on 8876 Progress: 1645 on 8876 Progress: 1646 on 8876 Progress: 1647 on 8876 Progress: 1648 on 8876 Progress: 1649 on 8876 Progress: 1650 on 8876 Progress: 1651 on 8876 Progress: 1652 on 8876 Progress: 1653 on 8876 Progress: 1654 on 8876 Progress: 1655 on 8876 Progress: 1656 on 8876 Progress: 1657 on 8876 Progress: 1658 on 8876 Progress: 1659 on 8876 Progress: 1660 on 8876 Progress: 1661 on 8876 Progress: 1662 on 8876 Progress: 1663 on 8876 Progress: 1664 on 8876 Progress: 1665 on 8876 Progress: 1666 on 8876 Progress: 1667 on 8876 Progress: 1668 on 8876 Progress: 1669 on 8876 Progress: 1670 on 8876 Progress: 1671 on 8876 Progress: 1672 on 8876 Progress: 1673 on 8876 Progress: 1674 on 8876 Progress: 1675 on 8876 Progress: 1676 on 8876 Progress: 1677 on 8876 Progress: 1678 on 8876 Progress: 1679 on 8876 Progress: 1680 on 8876 Progress: 1681 on 8876 Progress: 1682 on 8876 Progress: 1683 on 8876 Progress: 1684 on 8876 Progress: 1685 on 8876 Progress: 1686 on 8876 Progress: 1687 on 8876 Progress: 1688 on 8876 Progress: 1689 on 8876 Progress: 1690 on 8876 Progress: 1691 on 8876 Progress: 1692 on 8876 Progress: 1693 on 8876 Progress: 1694 on 8876 Progress: 1695 on 8876 Progress: 1696 on 8876 Progress: 1697 on 8876 Progress: 1698 on 8876 Progress: 1699 on 8876 Progress: 1700 on 8876 Progress: 1701 on 8876 Progress: 1702 on 8876 Progress: 1703 on 8876 Progress: 1704 on 8876 Progress: 1705 on 8876 Progress: 1706 on 8876 Progress: 1707 on 8876 Progress: 1708 on 8876 Progress: 1709 on 8876 Progress: 1710 on 8876 Progress: 1711 on 8876 Progress: 1712 on 8876 Progress: 1713 on 8876 Progress: 1714 on 8876 Progress: 1715 on 8876 Progress: 1716 on 8876 Progress: 1717 on 8876 Progress: 1718 on 8876 Progress: 1719 on 8876 Progress: 1720 on 8876 Progress: 1721 on 8876 Progress: 1722 on 8876 Progress: 1723 on 8876 Progress: 1724 on 8876 Progress: 1725 on 8876 Progress: 1726 on 8876 Progress: 1727 on 8876 Progress: 1728 on 8876 Progress: 1729 on 8876 Progress: 1730 on 8876 Progress: 1731 on 8876 Progress: 1732 on 8876 Progress: 1733 on 8876 Progress: 1734 on 8876 Progress: 1735 on 8876 Progress: 1736 on 8876 Progress: 1737 on 8876 Progress: 1738 on 8876 Progress: 1739 on 8876 Progress: 1740 on 8876 Progress: 1741 on 8876 Progress: 1742 on 8876 Progress: 1743 on 8876 Progress: 1744 on 8876 Progress: 1745 on 8876 Progress: 1746 on 8876 Progress: 1747 on 8876 Progress: 1748 on 8876 Progress: 1749 on 8876 Progress: 1750 on 8876 Progress: 1751 on 8876 Progress: 1752 on 8876 Progress: 1753 on 8876 Progress: 1754 on 8876 Progress: 1755 on 8876 Progress: 1756 on 8876 Progress: 1757 on 8876 Progress: 1758 on 8876 Progress: 1759 on 8876 Progress: 1760 on 8876 Progress: 1761 on 8876 Progress: 1762 on 8876 Progress: 1763 on 8876 Progress: 1764 on 8876 Progress: 1765 on 8876 Progress: 1766 on 8876 Progress: 1767 on 8876 Progress: 1768 on 8876 Progress: 1769 on 8876 Progress: 1770 on 8876 Progress: 1771 on 8876 Progress: 1772 on 8876 Progress: 1773 on 8876 Progress: 1774 on 8876 Progress: 1775 on 8876 Progress: 1776 on 8876 Progress: 1777 on 8876 Progress: 1778 on 8876 Progress: 1779 on 8876 Progress: 1780 on 8876 Progress: 1781 on 8876 Progress: 1782 on 8876 Progress: 1783 on 8876 Progress: 1784 on 8876 Progress: 1785 on 8876 Progress: 1786 on 8876 Progress: 1787 on 8876 Progress: 1788 on 8876 Progress: 1789 on 8876 Progress: 1790 on 8876 Progress: 1791 on 8876 Progress: 1792 on 8876 Progress: 1793 on 8876 Progress: 1794 on 8876 Progress: 1795 on 8876 Progress: 1796 on 8876 Progress: 1797 on 8876 Progress: 1798 on 8876 Progress: 1799 on 8876 Progress: 1800 on 8876 Progress: 1801 on 8876 Progress: 1802 on 8876 Progress: 1803 on 8876 Progress: 1804 on 8876 Progress: 1805 on 8876 Progress: 1806 on 8876 Progress: 1807 on 8876 Progress: 1808 on 8876 Progress: 1809 on 8876 Progress: 1810 on 8876 Progress: 1811 on 8876 Progress: 1812 on 8876 Progress: 1813 on 8876 Progress: 1814 on 8876 Progress: 1815 on 8876 Progress: 1816 on 8876 Progress: 1817 on 8876 Progress: 1818 on 8876 Progress: 1819 on 8876 Progress: 1820 on 8876 Progress: 1821 on 8876 Progress: 1822 on 8876 Progress: 1823 on 8876 Progress: 1824 on 8876 Progress: 1825 on 8876 Progress: 1826 on 8876 Progress: 1827 on 8876 Progress: 1828 on 8876 Progress: 1829 on 8876 Progress: 1830 on 8876 Progress: 1831 on 8876 Progress: 1832 on 8876 Progress: 1833 on 8876 Progress: 1834 on 8876 Progress: 1835 on 8876 Progress: 1836 on 8876 Progress: 1837 on 8876 Progress: 1838 on 8876 Progress: 1839 on 8876 Progress: 1840 on 8876 Progress: 1841 on 8876 Progress: 1842 on 8876 Progress: 1843 on 8876 Progress: 1844 on 8876 Progress: 1845 on 8876 Progress: 1846 on 8876 Progress: 1847 on 8876 Progress: 1848 on 8876 Progress: 1849 on 8876 Progress: 1850 on 8876 Progress: 1851 on 8876 Progress: 1852 on 8876 Progress: 1853 on 8876 Progress: 1854 on 8876 Progress: 1855 on 8876 Progress: 1856 on 8876 Progress: 1857 on 8876 Progress: 1858 on 8876 Progress: 1859 on 8876 Progress: 1860 on 8876 Progress: 1861 on 8876 Progress: 1862 on 8876 Progress: 1863 on 8876 Progress: 1864 on 8876 Progress: 1865 on 8876 Progress: 1866 on 8876 Progress: 1867 on 8876 Progress: 1868 on 8876 Progress: 1869 on 8876 Progress: 1870 on 8876 Progress: 1871 on 8876 Progress: 1872 on 8876 Progress: 1873 on 8876 Progress: 1874 on 8876 Progress: 1875 on 8876 Progress: 1876 on 8876 Progress: 1877 on 8876 Progress: 1878 on 8876 Progress: 1879 on 8876 Progress: 1880 on 8876 Progress: 1881 on 8876 Progress: 1882 on 8876 Progress: 1883 on 8876 Progress: 1884 on 8876 Progress: 1885 on 8876 Progress: 1886 on 8876 Progress: 1887 on 8876 Progress: 1888 on 8876 Progress: 1889 on 8876 Progress: 1890 on 8876 Progress: 1891 on 8876 Progress: 1892 on 8876 Progress: 1893 on 8876 Progress: 1894 on 8876 Progress: 1895 on 8876 Progress: 1896 on 8876 Progress: 1897 on 8876 Progress: 1898 on 8876 Progress: 1899 on 8876 Progress: 1900 on 8876 Progress: 1901 on 8876 Progress: 1902 on 8876 Progress: 1903 on 8876 Progress: 1904 on 8876 Progress: 1905 on 8876 Progress: 1906 on 8876 Progress: 1907 on 8876 Progress: 1908 on 8876 Progress: 1909 on 8876 Progress: 1910 on 8876 Progress: 1911 on 8876 Progress: 1912 on 8876 Progress: 1913 on 8876 Progress: 1914 on 8876 Progress: 1915 on 8876 Progress: 1916 on 8876 Progress: 1917 on 8876 Progress: 1918 on 8876 Progress: 1919 on 8876 Progress: 1920 on 8876 Progress: 1921 on 8876 Progress: 1922 on 8876 Progress: 1923 on 8876 Progress: 1924 on 8876 Progress: 1925 on 8876 Progress: 1926 on 8876 Progress: 1927 on 8876 Progress: 1928 on 8876 Progress: 1929 on 8876 Progress: 1930 on 8876 Progress: 1931 on 8876 Progress: 1932 on 8876 Progress: 1933 on 8876 Progress: 1934 on 8876 Progress: 1935 on 8876 Progress: 1936 on 8876 Progress: 1937 on 8876 Progress: 1938 on 8876 Progress: 1939 on 8876 Progress: 1940 on 8876 Progress: 1941 on 8876 Progress: 1942 on 8876 Progress: 1943 on 8876 Progress: 1944 on 8876 Progress: 1945 on 8876 Progress: 1946 on 8876 Progress: 1947 on 8876 Progress: 1948 on 8876 Progress: 1949 on 8876 Progress: 1950 on 8876 Progress: 1951 on 8876 Progress: 1952 on 8876 Progress: 1953 on 8876 Progress: 1954 on 8876 Progress: 1955 on 8876 Progress: 1956 on 8876 Progress: 1957 on 8876 Progress: 1958 on 8876 Progress: 1959 on 8876 Progress: 1960 on 8876 Progress: 1961 on 8876 Progress: 1962 on 8876 Progress: 1963 on 8876 Progress: 1964 on 8876 Progress: 1965 on 8876 Progress: 1966 on 8876 Progress: 1967 on 8876 Progress: 1968 on 8876 Progress: 1969 on 8876 Progress: 1970 on 8876 Progress: 1971 on 8876 Progress: 1972 on 8876 Progress: 1973 on 8876 Progress: 1974 on 8876 Progress: 1975 on 8876 Progress: 1976 on 8876 Progress: 1977 on 8876 Progress: 1978 on 8876 Progress: 1979 on 8876 Progress: 1980 on 8876 Progress: 1981 on 8876 Progress: 1982 on 8876 Progress: 1983 on 8876 Progress: 1984 on 8876 Progress: 1985 on 8876 Progress: 1986 on 8876 Progress: 1987 on 8876 Progress: 1988 on 8876 Progress: 1989 on 8876 Progress: 1990 on 8876 Progress: 1991 on 8876 Progress: 1992 on 8876 Progress: 1993 on 8876 Progress: 1994 on 8876 Progress: 1995 on 8876 Progress: 1996 on 8876 Progress: 1997 on 8876 Progress: 1998 on 8876 Progress: 1999 on 8876 Progress: 2000 on 8876 Progress: 2001 on 8876 Progress: 2002 on 8876 Progress: 2003 on 8876 Progress: 2004 on 8876 Progress: 2005 on 8876 Progress: 2006 on 8876 Progress: 2007 on 8876 Progress: 2008 on 8876 Progress: 2009 on 8876 Progress: 2010 on 8876 Progress: 2011 on 8876 Progress: 2012 on 8876 Progress: 2013 on 8876 Progress: 2014 on 8876 Progress: 2015 on 8876 Progress: 2016 on 8876 Progress: 2017 on 8876 Progress: 2018 on 8876 Progress: 2019 on 8876 Progress: 2020 on 8876 Progress: 2021 on 8876 Progress: 2022 on 8876 Progress: 2023 on 8876 Progress: 2024 on 8876 Progress: 2025 on 8876 Progress: 2026 on 8876 Progress: 2027 on 8876 Progress: 2028 on 8876 Progress: 2029 on 8876 Progress: 2030 on 8876 Progress: 2031 on 8876 Progress: 2032 on 8876 Progress: 2033 on 8876 Progress: 2034 on 8876 Progress: 2035 on 8876 Progress: 2036 on 8876 Progress: 2037 on 8876 Progress: 2038 on 8876 Progress: 2039 on 8876 Progress: 2040 on 8876 Progress: 2041 on 8876 Progress: 2042 on 8876 Progress: 2043 on 8876 Progress: 2044 on 8876 Progress: 2045 on 8876 Progress: 2046 on 8876 Progress: 2047 on 8876 Progress: 2048 on 8876 Progress: 2049 on 8876 Progress: 2050 on 8876 Progress: 2051 on 8876 Progress: 2052 on 8876 Progress: 2053 on 8876 Progress: 2054 on 8876 Progress: 2055 on 8876 Progress: 2056 on 8876 Progress: 2057 on 8876 Progress: 2058 on 8876 Progress: 2059 on 8876 Progress: 2060 on 8876 Progress: 2061 on 8876 Progress: 2062 on 8876 Progress: 2063 on 8876 Progress: 2064 on 8876 Progress: 2065 on 8876 Progress: 2066 on 8876 Progress: 2067 on 8876 Progress: 2068 on 8876 Progress: 2069 on 8876 Progress: 2070 on 8876 Progress: 2071 on 8876 Progress: 2072 on 8876 Progress: 2073 on 8876 Progress: 2074 on 8876 Progress: 2075 on 8876 Progress: 2076 on 8876 Progress: 2077 on 8876 Progress: 2078 on 8876 Progress: 2079 on 8876 Progress: 2080 on 8876 Progress: 2081 on 8876 Progress: 2082 on 8876 Progress: 2083 on 8876 Progress: 2084 on 8876 Progress: 2085 on 8876 Progress: 2086 on 8876 Progress: 2087 on 8876 Progress: 2088 on 8876 Progress: 2089 on 8876 Progress: 2090 on 8876 Progress: 2091 on 8876 Progress: 2092 on 8876 Progress: 2093 on 8876 Progress: 2094 on 8876 Progress: 2095 on 8876 Progress: 2096 on 8876 Progress: 2097 on 8876 Progress: 2098 on 8876 Progress: 2099 on 8876 Progress: 2100 on 8876 Progress: 2101 on 8876 Progress: 2102 on 8876 Progress: 2103 on 8876 Progress: 2104 on 8876 Progress: 2105 on 8876 Progress: 2106 on 8876 Progress: 2107 on 8876 Progress: 2108 on 8876 Progress: 2109 on 8876 Progress: 2110 on 8876 Progress: 2111 on 8876 Progress: 2112 on 8876 Progress: 2113 on 8876 Progress: 2114 on 8876 Progress: 2115 on 8876 Progress: 2116 on 8876 Progress: 2117 on 8876 Progress: 2118 on 8876 Progress: 2119 on 8876 Progress: 2120 on 8876 Progress: 2121 on 8876 Progress: 2122 on 8876 Progress: 2123 on 8876 Progress: 2124 on 8876 Progress: 2125 on 8876 Progress: 2126 on 8876 Progress: 2127 on 8876 Progress: 2128 on 8876 Progress: 2129 on 8876 Progress: 2130 on 8876 Progress: 2131 on 8876 Progress: 2132 on 8876 Progress: 2133 on 8876 Progress: 2134 on 8876 Progress: 2135 on 8876 Progress: 2136 on 8876 Progress: 2137 on 8876 Progress: 2138 on 8876 Progress: 2139 on 8876 Progress: 2140 on 8876 Progress: 2141 on 8876 Progress: 2142 on 8876 Progress: 2143 on 8876 Progress: 2144 on 8876 Progress: 2145 on 8876 Progress: 2146 on 8876 Progress: 2147 on 8876 Progress: 2148 on 8876 Progress: 2149 on 8876 Progress: 2150 on 8876 Progress: 2151 on 8876 Progress: 2152 on 8876 Progress: 2153 on 8876 Progress: 2154 on 8876 Progress: 2155 on 8876 Progress: 2156 on 8876 Progress: 2157 on 8876 Progress: 2158 on 8876 Progress: 2159 on 8876 Progress: 2160 on 8876 Progress: 2161 on 8876 Progress: 2162 on 8876 Progress: 2163 on 8876 Progress: 2164 on 8876 Progress: 2165 on 8876 Progress: 2166 on 8876 Progress: 2167 on 8876 Progress: 2168 on 8876 Progress: 2169 on 8876 Progress: 2170 on 8876 Progress: 2171 on 8876 Progress: 2172 on 8876 Progress: 2173 on 8876 Progress: 2174 on 8876 Progress: 2175 on 8876 Progress: 2176 on 8876 Progress: 2177 on 8876 Progress: 2178 on 8876 Progress: 2179 on 8876 Progress: 2180 on 8876 Progress: 2181 on 8876 Progress: 2182 on 8876 Progress: 2183 on 8876 Progress: 2184 on 8876 Progress: 2185 on 8876 Progress: 2186 on 8876 Progress: 2187 on 8876 Progress: 2188 on 8876 Progress: 2189 on 8876 Progress: 2190 on 8876 Progress: 2191 on 8876 Progress: 2192 on 8876 Progress: 2193 on 8876 Progress: 2194 on 8876 Progress: 2195 on 8876 Progress: 2196 on 8876 Progress: 2197 on 8876 Progress: 2198 on 8876 Progress: 2199 on 8876 Progress: 2200 on 8876 Progress: 2201 on 8876 Progress: 2202 on 8876 Progress: 2203 on 8876 Progress: 2204 on 8876 Progress: 2205 on 8876 Progress: 2206 on 8876 Progress: 2207 on 8876 Progress: 2208 on 8876 Progress: 2209 on 8876 Progress: 2210 on 8876 Progress: 2211 on 8876 Progress: 2212 on 8876 Progress: 2213 on 8876 Progress: 2214 on 8876 Progress: 2215 on 8876 Progress: 2216 on 8876 Progress: 2217 on 8876 Progress: 2218 on 8876 Progress: 2219 on 8876 Progress: 2220 on 8876 Progress: 2221 on 8876 Progress: 2222 on 8876 Progress: 2223 on 8876 Progress: 2224 on 8876 Progress: 2225 on 8876 Progress: 2226 on 8876 Progress: 2227 on 8876 Progress: 2228 on 8876 Progress: 2229 on 8876 Progress: 2230 on 8876 Progress: 2231 on 8876 Progress: 2232 on 8876 Progress: 2233 on 8876 Progress: 2234 on 8876 Progress: 2235 on 8876 Progress: 2236 on 8876 Progress: 2237 on 8876 Progress: 2238 on 8876 Progress: 2239 on 8876 Progress: 2240 on 8876 Progress: 2241 on 8876 Progress: 2242 on 8876 Progress: 2243 on 8876 Progress: 2244 on 8876 Progress: 2245 on 8876 Progress: 2246 on 8876 Progress: 2247 on 8876 Progress: 2248 on 8876 Progress: 2249 on 8876 Progress: 2250 on 8876 Progress: 2251 on 8876 Progress: 2252 on 8876 Progress: 2253 on 8876 Progress: 2254 on 8876 Progress: 2255 on 8876 Progress: 2256 on 8876 Progress: 2257 on 8876 Progress: 2258 on 8876 Progress: 2259 on 8876 Progress: 2260 on 8876 Progress: 2261 on 8876 Progress: 2262 on 8876 Progress: 2263 on 8876 Progress: 2264 on 8876 Progress: 2265 on 8876 Progress: 2266 on 8876 Progress: 2267 on 8876 Progress: 2268 on 8876 Progress: 2269 on 8876 Progress: 2270 on 8876 Progress: 2271 on 8876 Progress: 2272 on 8876 Progress: 2273 on 8876 Progress: 2274 on 8876 Progress: 2275 on 8876 Progress: 2276 on 8876 Progress: 2277 on 8876 Progress: 2278 on 8876 Progress: 2279 on 8876 Progress: 2280 on 8876 Progress: 2281 on 8876 Progress: 2282 on 8876 Progress: 2283 on 8876 Progress: 2284 on 8876 Progress: 2285 on 8876 Progress: 2286 on 8876 Progress: 2287 on 8876 Progress: 2288 on 8876 Progress: 2289 on 8876 Progress: 2290 on 8876 Progress: 2291 on 8876 Progress: 2292 on 8876 Progress: 2293 on 8876 Progress: 2294 on 8876 Progress: 2295 on 8876 Progress: 2296 on 8876 Progress: 2297 on 8876 Progress: 2298 on 8876 Progress: 2299 on 8876 Progress: 2300 on 8876 Progress: 2301 on 8876 Progress: 2302 on 8876 Progress: 2303 on 8876 Progress: 2304 on 8876 Progress: 2305 on 8876 Progress: 2306 on 8876 Progress: 2307 on 8876 Progress: 2308 on 8876 Progress: 2309 on 8876 Progress: 2310 on 8876 Progress: 2311 on 8876 Progress: 2312 on 8876 Progress: 2313 on 8876 Progress: 2314 on 8876 Progress: 2315 on 8876 Progress: 2316 on 8876 Progress: 2317 on 8876 Progress: 2318 on 8876 Progress: 2319 on 8876 Progress: 2320 on 8876 Progress: 2321 on 8876 Progress: 2322 on 8876 Progress: 2323 on 8876 Progress: 2324 on 8876 Progress: 2325 on 8876 Progress: 2326 on 8876 Progress: 2327 on 8876 Progress: 2328 on 8876 Progress: 2329 on 8876 Progress: 2330 on 8876 Progress: 2331 on 8876 Progress: 2332 on 8876 Progress: 2333 on 8876 Progress: 2334 on 8876 Progress: 2335 on 8876 Progress: 2336 on 8876 Progress: 2337 on 8876 Progress: 2338 on 8876 Progress: 2339 on 8876 Progress: 2340 on 8876 Progress: 2341 on 8876 Progress: 2342 on 8876 Progress: 2343 on 8876 Progress: 2344 on 8876 Progress: 2345 on 8876 Progress: 2346 on 8876 Progress: 2347 on 8876 Progress: 2348 on 8876 Progress: 2349 on 8876 Progress: 2350 on 8876 Progress: 2351 on 8876 Progress: 2352 on 8876 Progress: 2353 on 8876 Progress: 2354 on 8876 Progress: 2355 on 8876 Progress: 2356 on 8876 Progress: 2357 on 8876 Progress: 2358 on 8876 Progress: 2359 on 8876 Progress: 2360 on 8876 Progress: 2361 on 8876 Progress: 2362 on 8876 Progress: 2363 on 8876 Progress: 2364 on 8876 Progress: 2365 on 8876 Progress: 2366 on 8876 Progress: 2367 on 8876 Progress: 2368 on 8876 Progress: 2369 on 8876 Progress: 2370 on 8876 Progress: 2371 on 8876 Progress: 2372 on 8876 Progress: 2373 on 8876 Progress: 2374 on 8876 Progress: 2375 on 8876 Progress: 2376 on 8876 Progress: 2377 on 8876 Progress: 2378 on 8876 Progress: 2379 on 8876 Progress: 2380 on 8876 Progress: 2381 on 8876 Progress: 2382 on 8876 Progress: 2383 on 8876 Progress: 2384 on 8876 Progress: 2385 on 8876 Progress: 2386 on 8876 Progress: 2387 on 8876 Progress: 2388 on 8876 Progress: 2389 on 8876 Progress: 2390 on 8876 Progress: 2391 on 8876 Progress: 2392 on 8876 Progress: 2393 on 8876 Progress: 2394 on 8876 Progress: 2395 on 8876 Progress: 2396 on 8876 Progress: 2397 on 8876 Progress: 2398 on 8876 Progress: 2399 on 8876 Progress: 2400 on 8876 Progress: 2401 on 8876 Progress: 2402 on 8876 Progress: 2403 on 8876 Progress: 2404 on 8876 Progress: 2405 on 8876 Progress: 2406 on 8876 Progress: 2407 on 8876 Progress: 2408 on 8876 Progress: 2409 on 8876 Progress: 2410 on 8876 Progress: 2411 on 8876 Progress: 2412 on 8876 Progress: 2413 on 8876 Progress: 2414 on 8876 Progress: 2415 on 8876 Progress: 2416 on 8876 Progress: 2417 on 8876 Progress: 2418 on 8876 Progress: 2419 on 8876 Progress: 2420 on 8876 Progress: 2421 on 8876 Progress: 2422 on 8876 Progress: 2423 on 8876 Progress: 2424 on 8876 Progress: 2425 on 8876 Progress: 2426 on 8876 Progress: 2427 on 8876 Progress: 2428 on 8876 Progress: 2429 on 8876 Progress: 2430 on 8876 Progress: 2431 on 8876 Progress: 2432 on 8876 Progress: 2433 on 8876 Progress: 2434 on 8876 Progress: 2435 on 8876 Progress: 2436 on 8876 Progress: 2437 on 8876 Progress: 2438 on 8876 Progress: 2439 on 8876 Progress: 2440 on 8876 Progress: 2441 on 8876 Progress: 2442 on 8876 Progress: 2443 on 8876 Progress: 2444 on 8876 Progress: 2445 on 8876 Progress: 2446 on 8876 Progress: 2447 on 8876 Progress: 2448 on 8876 Progress: 2449 on 8876 Progress: 2450 on 8876 Progress: 2451 on 8876 Progress: 2452 on 8876 Progress: 2453 on 8876 Progress: 2454 on 8876 Progress: 2455 on 8876 Progress: 2456 on 8876 Progress: 2457 on 8876 Progress: 2458 on 8876 Progress: 2459 on 8876 Progress: 2460 on 8876 Progress: 2461 on 8876 Progress: 2462 on 8876 Progress: 2463 on 8876 Progress: 2464 on 8876 Progress: 2465 on 8876 Progress: 2466 on 8876 Progress: 2467 on 8876 Progress: 2468 on 8876 Progress: 2469 on 8876 Progress: 2470 on 8876 Progress: 2471 on 8876 Progress: 2472 on 8876 Progress: 2473 on 8876 Progress: 2474 on 8876 Progress: 2475 on 8876 Progress: 2476 on 8876 Progress: 2477 on 8876 Progress: 2478 on 8876 Progress: 2479 on 8876 Progress: 2480 on 8876 Progress: 2481 on 8876 Progress: 2482 on 8876 Progress: 2483 on 8876 Progress: 2484 on 8876 Progress: 2485 on 8876 Progress: 2486 on 8876 Progress: 2487 on 8876 Progress: 2488 on 8876 Progress: 2489 on 8876 Progress: 2490 on 8876 Progress: 2491 on 8876 Progress: 2492 on 8876 Progress: 2493 on 8876 Progress: 2494 on 8876 Progress: 2495 on 8876 Progress: 2496 on 8876 Progress: 2497 on 8876 Progress: 2498 on 8876 Progress: 2499 on 8876 Progress: 2500 on 8876 Progress: 2501 on 8876 Progress: 2502 on 8876 Progress: 2503 on 8876 Progress: 2504 on 8876 Progress: 2505 on 8876 Progress: 2506 on 8876 Progress: 2507 on 8876 Progress: 2508 on 8876 Progress: 2509 on 8876 Progress: 2510 on 8876 Progress: 2511 on 8876 Progress: 2512 on 8876 Progress: 2513 on 8876 Progress: 2514 on 8876 Progress: 2515 on 8876 Progress: 2516 on 8876 Progress: 2517 on 8876 Progress: 2518 on 8876 Progress: 2519 on 8876 Progress: 2520 on 8876 Progress: 2521 on 8876 Progress: 2522 on 8876 Progress: 2523 on 8876 Progress: 2524 on 8876 Progress: 2525 on 8876 Progress: 2526 on 8876 Progress: 2527 on 8876 Progress: 2528 on 8876 Progress: 2529 on 8876 Progress: 2530 on 8876 Progress: 2531 on 8876 Progress: 2532 on 8876 Progress: 2533 on 8876 Progress: 2534 on 8876 Progress: 2535 on 8876 Progress: 2536 on 8876 Progress: 2537 on 8876 Progress: 2538 on 8876 Progress: 2539 on 8876 Progress: 2540 on 8876 Progress: 2541 on 8876 Progress: 2542 on 8876 Progress: 2543 on 8876 Progress: 2544 on 8876 Progress: 2545 on 8876 Progress: 2546 on 8876 Progress: 2547 on 8876 Progress: 2548 on 8876 Progress: 2549 on 8876 Progress: 2550 on 8876 Progress: 2551 on 8876 Progress: 2552 on 8876 Progress: 2553 on 8876 Progress: 2554 on 8876 Progress: 2555 on 8876 Progress: 2556 on 8876 Progress: 2557 on 8876 Progress: 2558 on 8876 Progress: 2559 on 8876 Progress: 2560 on 8876 Progress: 2561 on 8876 Progress: 2562 on 8876 Progress: 2563 on 8876 Progress: 2564 on 8876 Progress: 2565 on 8876 Progress: 2566 on 8876 Progress: 2567 on 8876 Progress: 2568 on 8876 Progress: 2569 on 8876 Progress: 2570 on 8876 Progress: 2571 on 8876 Progress: 2572 on 8876 Progress: 2573 on 8876 Progress: 2574 on 8876 Progress: 2575 on 8876 Progress: 2576 on 8876 Progress: 2577 on 8876 Progress: 2578 on 8876 Progress: 2579 on 8876 Progress: 2580 on 8876 Progress: 2581 on 8876 Progress: 2582 on 8876 Progress: 2583 on 8876 Progress: 2584 on 8876 Progress: 2585 on 8876 Progress: 2586 on 8876 Progress: 2587 on 8876 Progress: 2588 on 8876 Progress: 2589 on 8876 Progress: 2590 on 8876 Progress: 2591 on 8876 Progress: 2592 on 8876 Progress: 2593 on 8876 Progress: 2594 on 8876 Progress: 2595 on 8876 Progress: 2596 on 8876 Progress: 2597 on 8876 Progress: 2598 on 8876 Progress: 2599 on 8876 Progress: 2600 on 8876 Progress: 2601 on 8876 Progress: 2602 on 8876 Progress: 2603 on 8876 Progress: 2604 on 8876 Progress: 2605 on 8876 Progress: 2606 on 8876 Progress: 2607 on 8876 Progress: 2608 on 8876 Progress: 2609 on 8876 Progress: 2610 on 8876 Progress: 2611 on 8876 Progress: 2612 on 8876 Progress: 2613 on 8876 Progress: 2614 on 8876 Progress: 2615 on 8876 Progress: 2616 on 8876 Progress: 2617 on 8876 Progress: 2618 on 8876 Progress: 2619 on 8876 Progress: 2620 on 8876 Progress: 2621 on 8876 Progress: 2622 on 8876 Progress: 2623 on 8876 Progress: 2624 on 8876 Progress: 2625 on 8876 Progress: 2626 on 8876 Progress: 2627 on 8876 Progress: 2628 on 8876 Progress: 2629 on 8876 Progress: 2630 on 8876 Progress: 2631 on 8876 Progress: 2632 on 8876 Progress: 2633 on 8876 Progress: 2634 on 8876 Progress: 2635 on 8876 Progress: 2636 on 8876 Progress: 2637 on 8876 Progress: 2638 on 8876 Progress: 2639 on 8876 Progress: 2640 on 8876 Progress: 2641 on 8876 Progress: 2642 on 8876 Progress: 2643 on 8876 Progress: 2644 on 8876 Progress: 2645 on 8876 Progress: 2646 on 8876 Progress: 2647 on 8876 Progress: 2648 on 8876 Progress: 2649 on 8876 Progress: 2650 on 8876 Progress: 2651 on 8876 Progress: 2652 on 8876 Progress: 2653 on 8876 Progress: 2654 on 8876 Progress: 2655 on 8876 Progress: 2656 on 8876 Progress: 2657 on 8876 Progress: 2658 on 8876 Progress: 2659 on 8876 Progress: 2660 on 8876 Progress: 2661 on 8876 Progress: 2662 on 8876 Progress: 2663 on 8876 Progress: 2664 on 8876 Progress: 2665 on 8876 Progress: 2666 on 8876 Progress: 2667 on 8876 Progress: 2668 on 8876 Progress: 2669 on 8876 Progress: 2670 on 8876 Progress: 2671 on 8876 Progress: 2672 on 8876 Progress: 2673 on 8876 Progress: 2674 on 8876 Progress: 2675 on 8876 Progress: 2676 on 8876 Progress: 2677 on 8876 Progress: 2678 on 8876 Progress: 2679 on 8876 Progress: 2680 on 8876 Progress: 2681 on 8876 Progress: 2682 on 8876 Progress: 2683 on 8876 Progress: 2684 on 8876 Progress: 2685 on 8876 Progress: 2686 on 8876 Progress: 2687 on 8876 Progress: 2688 on 8876 Progress: 2689 on 8876 Progress: 2690 on 8876 Progress: 2691 on 8876 Progress: 2692 on 8876 Progress: 2693 on 8876 Progress: 2694 on 8876 Progress: 2695 on 8876 Progress: 2696 on 8876 Progress: 2697 on 8876 Progress: 2698 on 8876 Progress: 2699 on 8876 Progress: 2700 on 8876 Progress: 2701 on 8876 Progress: 2702 on 8876 Progress: 2703 on 8876 Progress: 2704 on 8876 Progress: 2705 on 8876 Progress: 2706 on 8876 Progress: 2707 on 8876 Progress: 2708 on 8876 Progress: 2709 on 8876 Progress: 2710 on 8876 Progress: 2711 on 8876 Progress: 2712 on 8876 Progress: 2713 on 8876 Progress: 2714 on 8876 Progress: 2715 on 8876 Progress: 2716 on 8876 Progress: 2717 on 8876 Progress: 2718 on 8876 Progress: 2719 on 8876 Progress: 2720 on 8876 Progress: 2721 on 8876 Progress: 2722 on 8876 Progress: 2723 on 8876 Progress: 2724 on 8876 Progress: 2725 on 8876 Progress: 2726 on 8876 Progress: 2727 on 8876 Progress: 2728 on 8876 Progress: 2729 on 8876 Progress: 2730 on 8876 Progress: 2731 on 8876 Progress: 2732 on 8876 Progress: 2733 on 8876 Progress: 2734 on 8876 Progress: 2735 on 8876 Progress: 2736 on 8876 Progress: 2737 on 8876 Progress: 2738 on 8876 Progress: 2739 on 8876 Progress: 2740 on 8876 Progress: 2741 on 8876 Progress: 2742 on 8876 Progress: 2743 on 8876 Progress: 2744 on 8876 Progress: 2745 on 8876 Progress: 2746 on 8876 Progress: 2747 on 8876 Progress: 2748 on 8876 Progress: 2749 on 8876 Progress: 2750 on 8876 Progress: 2751 on 8876 Progress: 2752 on 8876 Progress: 2753 on 8876 Progress: 2754 on 8876 Progress: 2755 on 8876 Progress: 2756 on 8876 Progress: 2757 on 8876 Progress: 2758 on 8876 Progress: 2759 on 8876 Progress: 2760 on 8876 Progress: 2761 on 8876 Progress: 2762 on 8876 Progress: 2763 on 8876 Progress: 2764 on 8876 Progress: 2765 on 8876 Progress: 2766 on 8876 Progress: 2767 on 8876 Progress: 2768 on 8876 Progress: 2769 on 8876 Progress: 2770 on 8876 Progress: 2771 on 8876 Progress: 2772 on 8876 Progress: 2773 on 8876 Progress: 2774 on 8876 Progress: 2775 on 8876 Progress: 2776 on 8876 Progress: 2777 on 8876 Progress: 2778 on 8876 Progress: 2779 on 8876 Progress: 2780 on 8876 Progress: 2781 on 8876 Progress: 2782 on 8876 Progress: 2783 on 8876 Progress: 2784 on 8876 Progress: 2785 on 8876 Progress: 2786 on 8876 Progress: 2787 on 8876 Progress: 2788 on 8876 Progress: 2789 on 8876 Progress: 2790 on 8876 Progress: 2791 on 8876 Progress: 2792 on 8876 Progress: 2793 on 8876 Progress: 2794 on 8876 Progress: 2795 on 8876 Progress: 2796 on 8876 Progress: 2797 on 8876 Progress: 2798 on 8876 Progress: 2799 on 8876 Progress: 2800 on 8876 Progress: 2801 on 8876 Progress: 2802 on 8876 Progress: 2803 on 8876 Progress: 2804 on 8876 Progress: 2805 on 8876 Progress: 2806 on 8876 Progress: 2807 on 8876 Progress: 2808 on 8876 Progress: 2809 on 8876 Progress: 2810 on 8876 Progress: 2811 on 8876 Progress: 2812 on 8876 Progress: 2813 on 8876 Progress: 2814 on 8876 Progress: 2815 on 8876 Progress: 2816 on 8876 Progress: 2817 on 8876 Progress: 2818 on 8876 Progress: 2819 on 8876 Progress: 2820 on 8876 Progress: 2821 on 8876 Progress: 2822 on 8876 Progress: 2823 on 8876 Progress: 2824 on 8876 Progress: 2825 on 8876 Progress: 2826 on 8876 Progress: 2827 on 8876 Progress: 2828 on 8876 Progress: 2829 on 8876 Progress: 2830 on 8876 Progress: 2831 on 8876 Progress: 2832 on 8876 Progress: 2833 on 8876 Progress: 2834 on 8876 Progress: 2835 on 8876 Progress: 2836 on 8876 Progress: 2837 on 8876 Progress: 2838 on 8876 Progress: 2839 on 8876 Progress: 2840 on 8876 Progress: 2841 on 8876 Progress: 2842 on 8876 Progress: 2843 on 8876 Progress: 2844 on 8876 Progress: 2845 on 8876 Progress: 2846 on 8876 Progress: 2847 on 8876 Progress: 2848 on 8876 Progress: 2849 on 8876 Progress: 2850 on 8876 Progress: 2851 on 8876 Progress: 2852 on 8876 Progress: 2853 on 8876 Progress: 2854 on 8876 Progress: 2855 on 8876 Progress: 2856 on 8876 Progress: 2857 on 8876 Progress: 2858 on 8876 Progress: 2859 on 8876 Progress: 2860 on 8876 Progress: 2861 on 8876 Progress: 2862 on 8876 Progress: 2863 on 8876 Progress: 2864 on 8876 Progress: 2865 on 8876 Progress: 2866 on 8876 Progress: 2867 on 8876 Progress: 2868 on 8876 Progress: 2869 on 8876 Progress: 2870 on 8876 Progress: 2871 on 8876 Progress: 2872 on 8876 Progress: 2873 on 8876 Progress: 2874 on 8876 Progress: 2875 on 8876 Progress: 2876 on 8876 Progress: 2877 on 8876 Progress: 2878 on 8876 Progress: 2879 on 8876 Progress: 2880 on 8876 Progress: 2881 on 8876 Progress: 2882 on 8876 Progress: 2883 on 8876 Progress: 2884 on 8876 Progress: 2885 on 8876 Progress: 2886 on 8876 Progress: 2887 on 8876 Progress: 2888 on 8876 Progress: 2889 on 8876 Progress: 2890 on 8876 Progress: 2891 on 8876 Progress: 2892 on 8876 Progress: 2893 on 8876 Progress: 2894 on 8876 Progress: 2895 on 8876 Progress: 2896 on 8876 Progress: 2897 on 8876 Progress: 2898 on 8876 Progress: 2899 on 8876 Progress: 2900 on 8876 Progress: 2901 on 8876 Progress: 2902 on 8876 Progress: 2903 on 8876 Progress: 2904 on 8876 Progress: 2905 on 8876 Progress: 2906 on 8876 Progress: 2907 on 8876 Progress: 2908 on 8876 Progress: 2909 on 8876 Progress: 2910 on 8876 Progress: 2911 on 8876 Progress: 2912 on 8876 Progress: 2913 on 8876 Progress: 2914 on 8876 Progress: 2915 on 8876 Progress: 2916 on 8876 Progress: 2917 on 8876 Progress: 2918 on 8876 Progress: 2919 on 8876 Progress: 2920 on 8876 Progress: 2921 on 8876 Progress: 2922 on 8876 Progress: 2923 on 8876 Progress: 2924 on 8876 Progress: 2925 on 8876 Progress: 2926 on 8876 Progress: 2927 on 8876 Progress: 2928 on 8876 Progress: 2929 on 8876 Progress: 2930 on 8876 Progress: 2931 on 8876 Progress: 2932 on 8876 Progress: 2933 on 8876 Progress: 2934 on 8876 Progress: 2935 on 8876 Progress: 2936 on 8876 Progress: 2937 on 8876 Progress: 2938 on 8876 Progress: 2939 on 8876 Progress: 2940 on 8876 Progress: 2941 on 8876 Progress: 2942 on 8876 Progress: 2943 on 8876 Progress: 2944 on 8876 Progress: 2945 on 8876 Progress: 2946 on 8876 Progress: 2947 on 8876 Progress: 2948 on 8876 Progress: 2949 on 8876 Progress: 2950 on 8876 Progress: 2951 on 8876 Progress: 2952 on 8876 Progress: 2953 on 8876 Progress: 2954 on 8876 Progress: 2955 on 8876 Progress: 2956 on 8876 Progress: 2957 on 8876 Progress: 2958 on 8876 Progress: 2959 on 8876 Progress: 2960 on 8876 Progress: 2961 on 8876 Progress: 2962 on 8876 Progress: 2963 on 8876 Progress: 2964 on 8876 Progress: 2965 on 8876 Progress: 2966 on 8876 Progress: 2967 on 8876 Progress: 2968 on 8876 Progress: 2969 on 8876 Progress: 2970 on 8876 Progress: 2971 on 8876 Progress: 2972 on 8876 Progress: 2973 on 8876 Progress: 2974 on 8876 Progress: 2975 on 8876 Progress: 2976 on 8876 Progress: 2977 on 8876 Progress: 2978 on 8876 Progress: 2979 on 8876 Progress: 2980 on 8876 Progress: 2981 on 8876 Progress: 2982 on 8876 Progress: 2983 on 8876 Progress: 2984 on 8876 Progress: 2985 on 8876 Progress: 2986 on 8876 Progress: 2987 on 8876 Progress: 2988 on 8876 Progress: 2989 on 8876 Progress: 2990 on 8876 Progress: 2991 on 8876 Progress: 2992 on 8876 Progress: 2993 on 8876 Progress: 2994 on 8876 Progress: 2995 on 8876 Progress: 2996 on 8876 Progress: 2997 on 8876 Progress: 2998 on 8876 Progress: 2999 on 8876 Progress: 3000 on 8876 Progress: 3001 on 8876 Progress: 3002 on 8876 Progress: 3003 on 8876 Progress: 3004 on 8876 Progress: 3005 on 8876 Progress: 3006 on 8876 Progress: 3007 on 8876 Progress: 3008 on 8876 Progress: 3009 on 8876 Progress: 3010 on 8876 Progress: 3011 on 8876 Progress: 3012 on 8876 Progress: 3013 on 8876 Progress: 3014 on 8876 Progress: 3015 on 8876 Progress: 3016 on 8876 Progress: 3017 on 8876 Progress: 3018 on 8876 Progress: 3019 on 8876 Progress: 3020 on 8876 Progress: 3021 on 8876 Progress: 3022 on 8876 Progress: 3023 on 8876 Progress: 3024 on 8876 Progress: 3025 on 8876 Progress: 3026 on 8876 Progress: 3027 on 8876 Progress: 3028 on 8876 Progress: 3029 on 8876 Progress: 3030 on 8876 Progress: 3031 on 8876 Progress: 3032 on 8876 Progress: 3033 on 8876 Progress: 3034 on 8876 Progress: 3035 on 8876 Progress: 3036 on 8876 Progress: 3037 on 8876 Progress: 3038 on 8876 Progress: 3039 on 8876 Progress: 3040 on 8876 Progress: 3041 on 8876 Progress: 3042 on 8876 Progress: 3043 on 8876 Progress: 3044 on 8876 Progress: 3045 on 8876 Progress: 3046 on 8876 Progress: 3047 on 8876 Progress: 3048 on 8876 Progress: 3049 on 8876 Progress: 3050 on 8876 Progress: 3051 on 8876 Progress: 3052 on 8876 Progress: 3053 on 8876 Progress: 3054 on 8876 Progress: 3055 on 8876 Progress: 3056 on 8876 Progress: 3057 on 8876 Progress: 3058 on 8876 Progress: 3059 on 8876 Progress: 3060 on 8876 Progress: 3061 on 8876 Progress: 3062 on 8876 Progress: 3063 on 8876 Progress: 3064 on 8876 Progress: 3065 on 8876 Progress: 3066 on 8876 Progress: 3067 on 8876 Progress: 3068 on 8876 Progress: 3069 on 8876 Progress: 3070 on 8876 Progress: 3071 on 8876 Progress: 3072 on 8876 Progress: 3073 on 8876 Progress: 3074 on 8876 Progress: 3075 on 8876 Progress: 3076 on 8876 Progress: 3077 on 8876 Progress: 3078 on 8876 Progress: 3079 on 8876 Progress: 3080 on 8876 Progress: 3081 on 8876 Progress: 3082 on 8876 Progress: 3083 on 8876 Progress: 3084 on 8876 Progress: 3085 on 8876 Progress: 3086 on 8876 Progress: 3087 on 8876 Progress: 3088 on 8876 Progress: 3089 on 8876 Progress: 3090 on 8876 Progress: 3091 on 8876 Progress: 3092 on 8876 Progress: 3093 on 8876 Progress: 3094 on 8876 Progress: 3095 on 8876 Progress: 3096 on 8876 Progress: 3097 on 8876 Progress: 3098 on 8876 Progress: 3099 on 8876 Progress: 3100 on 8876 Progress: 3101 on 8876 Progress: 3102 on 8876 Progress: 3103 on 8876 Progress: 3104 on 8876 Progress: 3105 on 8876 Progress: 3106 on 8876 Progress: 3107 on 8876 Progress: 3108 on 8876 Progress: 3109 on 8876 Progress: 3110 on 8876 Progress: 3111 on 8876 Progress: 3112 on 8876 Progress: 3113 on 8876 Progress: 3114 on 8876 Progress: 3115 on 8876 Progress: 3116 on 8876 Progress: 3117 on 8876 Progress: 3118 on 8876 Progress: 3119 on 8876 Progress: 3120 on 8876 Progress: 3121 on 8876 Progress: 3122 on 8876 Progress: 3123 on 8876 Progress: 3124 on 8876 Progress: 3125 on 8876 Progress: 3126 on 8876 Progress: 3127 on 8876 Progress: 3128 on 8876 Progress: 3129 on 8876 Progress: 3130 on 8876 Progress: 3131 on 8876 Progress: 3132 on 8876 Progress: 3133 on 8876 Progress: 3134 on 8876 Progress: 3135 on 8876 Progress: 3136 on 8876 Progress: 3137 on 8876 Progress: 3138 on 8876 Progress: 3139 on 8876 Progress: 3140 on 8876 Progress: 3141 on 8876 Progress: 3142 on 8876 Progress: 3143 on 8876 Progress: 3144 on 8876 Progress: 3145 on 8876 Progress: 3146 on 8876 Progress: 3147 on 8876 Progress: 3148 on 8876 Progress: 3149 on 8876 Progress: 3150 on 8876 Progress: 3151 on 8876 Progress: 3152 on 8876 Progress: 3153 on 8876 Progress: 3154 on 8876 Progress: 3155 on 8876 Progress: 3156 on 8876 Progress: 3157 on 8876 Progress: 3158 on 8876 Progress: 3159 on 8876 Progress: 3160 on 8876 Progress: 3161 on 8876 Progress: 3162 on 8876 Progress: 3163 on 8876 Progress: 3164 on 8876 Progress: 3165 on 8876 Progress: 3166 on 8876 Progress: 3167 on 8876 Progress: 3168 on 8876 Progress: 3169 on 8876 Progress: 3170 on 8876 Progress: 3171 on 8876 Progress: 3172 on 8876 Progress: 3173 on 8876 Progress: 3174 on 8876 Progress: 3175 on 8876 Progress: 3176 on 8876 Progress: 3177 on 8876 Progress: 3178 on 8876 Progress: 3179 on 8876 Progress: 3180 on 8876 Progress: 3181 on 8876 Progress: 3182 on 8876 Progress: 3183 on 8876 Progress: 3184 on 8876 Progress: 3185 on 8876 Progress: 3186 on 8876 Progress: 3187 on 8876 Progress: 3188 on 8876 Progress: 3189 on 8876 Progress: 3190 on 8876 Progress: 3191 on 8876 Progress: 3192 on 8876 Progress: 3193 on 8876 Progress: 3194 on 8876 Progress: 3195 on 8876 Progress: 3196 on 8876 Progress: 3197 on 8876 Progress: 3198 on 8876 Progress: 3199 on 8876 Progress: 3200 on 8876 Progress: 3201 on 8876 Progress: 3202 on 8876 Progress: 3203 on 8876 Progress: 3204 on 8876 Progress: 3205 on 8876 Progress: 3206 on 8876 Progress: 3207 on 8876 Progress: 3208 on 8876 Progress: 3209 on 8876 Progress: 3210 on 8876 Progress: 3211 on 8876 Progress: 3212 on 8876 Progress: 3213 on 8876 Progress: 3214 on 8876 Progress: 3215 on 8876 Progress: 3216 on 8876 Progress: 3217 on 8876 Progress: 3218 on 8876 Progress: 3219 on 8876 Progress: 3220 on 8876 Progress: 3221 on 8876 Progress: 3222 on 8876 Progress: 3223 on 8876 Progress: 3224 on 8876 Progress: 3225 on 8876 Progress: 3226 on 8876 Progress: 3227 on 8876 Progress: 3228 on 8876 Progress: 3229 on 8876 Progress: 3230 on 8876 Progress: 3231 on 8876 Progress: 3232 on 8876 Progress: 3233 on 8876 Progress: 3234 on 8876 Progress: 3235 on 8876 Progress: 3236 on 8876 Progress: 3237 on 8876 Progress: 3238 on 8876 Progress: 3239 on 8876 Progress: 3240 on 8876 Progress: 3241 on 8876 Progress: 3242 on 8876 Progress: 3243 on 8876 Progress: 3244 on 8876 Progress: 3245 on 8876 Progress: 3246 on 8876 Progress: 3247 on 8876 Progress: 3248 on 8876 Progress: 3249 on 8876 Progress: 3250 on 8876 Progress: 3251 on 8876 Progress: 3252 on 8876 Progress: 3253 on 8876 Progress: 3254 on 8876 Progress: 3255 on 8876 Progress: 3256 on 8876 Progress: 3257 on 8876 Progress: 3258 on 8876 Progress: 3259 on 8876 Progress: 3260 on 8876 Progress: 3261 on 8876 Progress: 3262 on 8876 Progress: 3263 on 8876 Progress: 3264 on 8876 Progress: 3265 on 8876 Progress: 3266 on 8876 Progress: 3267 on 8876 Progress: 3268 on 8876 Progress: 3269 on 8876 Progress: 3270 on 8876 Progress: 3271 on 8876 Progress: 3272 on 8876 Progress: 3273 on 8876 Progress: 3274 on 8876 Progress: 3275 on 8876 Progress: 3276 on 8876 Progress: 3277 on 8876 Progress: 3278 on 8876 Progress: 3279 on 8876 Progress: 3280 on 8876 Progress: 3281 on 8876 Progress: 3282 on 8876 Progress: 3283 on 8876 Progress: 3284 on 8876 Progress: 3285 on 8876 Progress: 3286 on 8876 Progress: 3287 on 8876 Progress: 3288 on 8876 Progress: 3289 on 8876 Progress: 3290 on 8876 Progress: 3291 on 8876 Progress: 3292 on 8876 Progress: 3293 on 8876 Progress: 3294 on 8876 Progress: 3295 on 8876 Progress: 3296 on 8876 Progress: 3297 on 8876 Progress: 3298 on 8876 Progress: 3299 on 8876 Progress: 3300 on 8876 Progress: 3301 on 8876 Progress: 3302 on 8876 Progress: 3303 on 8876 Progress: 3304 on 8876 Progress: 3305 on 8876 Progress: 3306 on 8876 Progress: 3307 on 8876 Progress: 3308 on 8876 Progress: 3309 on 8876 Progress: 3310 on 8876 Progress: 3311 on 8876 Progress: 3312 on 8876 Progress: 3313 on 8876 Progress: 3314 on 8876 Progress: 3315 on 8876 Progress: 3316 on 8876 Progress: 3317 on 8876 Progress: 3318 on 8876 Progress: 3319 on 8876 Progress: 3320 on 8876 Progress: 3321 on 8876 Progress: 3322 on 8876 Progress: 3323 on 8876 Progress: 3324 on 8876 Progress: 3325 on 8876 Progress: 3326 on 8876 Progress: 3327 on 8876 Progress: 3328 on 8876 Progress: 3329 on 8876 Progress: 3330 on 8876 Progress: 3331 on 8876 Progress: 3332 on 8876 Progress: 3333 on 8876 Progress: 3334 on 8876 Progress: 3335 on 8876 Progress: 3336 on 8876 Progress: 3337 on 8876 Progress: 3338 on 8876 Progress: 3339 on 8876 Progress: 3340 on 8876 Progress: 3341 on 8876 Progress: 3342 on 8876 Progress: 3343 on 8876 Progress: 3344 on 8876 Progress: 3345 on 8876 Progress: 3346 on 8876 Progress: 3347 on 8876 Progress: 3348 on 8876 Progress: 3349 on 8876 Progress: 3350 on 8876 Progress: 3351 on 8876 Progress: 3352 on 8876 Progress: 3353 on 8876 Progress: 3354 on 8876 Progress: 3355 on 8876 Progress: 3356 on 8876 Progress: 3357 on 8876 Progress: 3358 on 8876 Progress: 3359 on 8876 Progress: 3360 on 8876 Progress: 3361 on 8876 Progress: 3362 on 8876 Progress: 3363 on 8876 Progress: 3364 on 8876 Progress: 3365 on 8876 Progress: 3366 on 8876 Progress: 3367 on 8876 Progress: 3368 on 8876 Progress: 3369 on 8876 Progress: 3370 on 8876 Progress: 3371 on 8876 Progress: 3372 on 8876 Progress: 3373 on 8876 Progress: 3374 on 8876 Progress: 3375 on 8876 Progress: 3376 on 8876 Progress: 3377 on 8876 Progress: 3378 on 8876 Progress: 3379 on 8876 Progress: 3380 on 8876 Progress: 3381 on 8876 Progress: 3382 on 8876 Progress: 3383 on 8876 Progress: 3384 on 8876 Progress: 3385 on 8876 Progress: 3386 on 8876 Progress: 3387 on 8876 Progress: 3388 on 8876 Progress: 3389 on 8876 Progress: 3390 on 8876 Progress: 3391 on 8876 Progress: 3392 on 8876 Progress: 3393 on 8876 Progress: 3394 on 8876 Progress: 3395 on 8876 Progress: 3396 on 8876 Progress: 3397 on 8876 Progress: 3398 on 8876 Progress: 3399 on 8876 Progress: 3400 on 8876 Progress: 3401 on 8876 Progress: 3402 on 8876 Progress: 3403 on 8876 Progress: 3404 on 8876 Progress: 3405 on 8876 Progress: 3406 on 8876 Progress: 3407 on 8876 Progress: 3408 on 8876 Progress: 3409 on 8876 Progress: 3410 on 8876 Progress: 3411 on 8876 Progress: 3412 on 8876 Progress: 3413 on 8876 Progress: 3414 on 8876 Progress: 3415 on 8876 Progress: 3416 on 8876 Progress: 3417 on 8876 Progress: 3418 on 8876 Progress: 3419 on 8876 Progress: 3420 on 8876 Progress: 3421 on 8876 Progress: 3422 on 8876 Progress: 3423 on 8876 Progress: 3424 on 8876 Progress: 3425 on 8876 Progress: 3426 on 8876 Progress: 3427 on 8876 Progress: 3428 on 8876 Progress: 3429 on 8876 Progress: 3430 on 8876 Progress: 3431 on 8876 Progress: 3432 on 8876 Progress: 3433 on 8876 Progress: 3434 on 8876 Progress: 3435 on 8876 Progress: 3436 on 8876 Progress: 3437 on 8876 Progress: 3438 on 8876 Progress: 3439 on 8876 Progress: 3440 on 8876 Progress: 3441 on 8876 Progress: 3442 on 8876 Progress: 3443 on 8876 Progress: 3444 on 8876 Progress: 3445 on 8876 Progress: 3446 on 8876 Progress: 3447 on 8876 Progress: 3448 on 8876 Progress: 3449 on 8876 Progress: 3450 on 8876 Progress: 3451 on 8876 Progress: 3452 on 8876 Progress: 3453 on 8876 Progress: 3454 on 8876 Progress: 3455 on 8876 Progress: 3456 on 8876 Progress: 3457 on 8876 Progress: 3458 on 8876 Progress: 3459 on 8876 Progress: 3460 on 8876 Progress: 3461 on 8876 Progress: 3462 on 8876 Progress: 3463 on 8876 Progress: 3464 on 8876 Progress: 3465 on 8876 Progress: 3466 on 8876 Progress: 3467 on 8876 Progress: 3468 on 8876 Progress: 3469 on 8876 Progress: 3470 on 8876 Progress: 3471 on 8876 Progress: 3472 on 8876 Progress: 3473 on 8876 Progress: 3474 on 8876 Progress: 3475 on 8876 Progress: 3476 on 8876 Progress: 3477 on 8876 Progress: 3478 on 8876 Progress: 3479 on 8876 Progress: 3480 on 8876 Progress: 3481 on 8876 Progress: 3482 on 8876 Progress: 3483 on 8876 Progress: 3484 on 8876 Progress: 3485 on 8876 Progress: 3486 on 8876 Progress: 3487 on 8876 Progress: 3488 on 8876 Progress: 3489 on 8876 Progress: 3490 on 8876 Progress: 3491 on 8876 Progress: 3492 on 8876 Progress: 3493 on 8876 Progress: 3494 on 8876 Progress: 3495 on 8876 Progress: 3496 on 8876 Progress: 3497 on 8876 Progress: 3498 on 8876 Progress: 3499 on 8876 Progress: 3500 on 8876 Progress: 3501 on 8876 Progress: 3502 on 8876 Progress: 3503 on 8876 Progress: 3504 on 8876 Progress: 3505 on 8876 Progress: 3506 on 8876 Progress: 3507 on 8876 Progress: 3508 on 8876 Progress: 3509 on 8876 Progress: 3510 on 8876 Progress: 3511 on 8876 Progress: 3512 on 8876 Progress: 3513 on 8876 Progress: 3514 on 8876 Progress: 3515 on 8876 Progress: 3516 on 8876 Progress: 3517 on 8876 Progress: 3518 on 8876 Progress: 3519 on 8876 Progress: 3520 on 8876 Progress: 3521 on 8876 Progress: 3522 on 8876 Progress: 3523 on 8876 Progress: 3524 on 8876 Progress: 3525 on 8876 Progress: 3526 on 8876 Progress: 3527 on 8876 Progress: 3528 on 8876 Progress: 3529 on 8876 Progress: 3530 on 8876 Progress: 3531 on 8876 Progress: 3532 on 8876 Progress: 3533 on 8876 Progress: 3534 on 8876 Progress: 3535 on 8876 Progress: 3536 on 8876 Progress: 3537 on 8876 Progress: 3538 on 8876 Progress: 3539 on 8876 Progress: 3540 on 8876 Progress: 3541 on 8876 Progress: 3542 on 8876 Progress: 3543 on 8876 Progress: 3544 on 8876 Progress: 3545 on 8876 Progress: 3546 on 8876 Progress: 3547 on 8876 Progress: 3548 on 8876 Progress: 3549 on 8876 Progress: 3550 on 8876 Progress: 3551 on 8876 Progress: 3552 on 8876 Progress: 3553 on 8876 Progress: 3554 on 8876 Progress: 3555 on 8876 Progress: 3556 on 8876 Progress: 3557 on 8876 Progress: 3558 on 8876 Progress: 3559 on 8876 Progress: 3560 on 8876 Progress: 3561 on 8876 Progress: 3562 on 8876 Progress: 3563 on 8876 Progress: 3564 on 8876 Progress: 3565 on 8876 Progress: 3566 on 8876 Progress: 3567 on 8876 Progress: 3568 on 8876 Progress: 3569 on 8876 Progress: 3570 on 8876 Progress: 3571 on 8876 Progress: 3572 on 8876 Progress: 3573 on 8876 Progress: 3574 on 8876 Progress: 3575 on 8876 Progress: 3576 on 8876 Progress: 3577 on 8876 Progress: 3578 on 8876 Progress: 3579 on 8876 Progress: 3580 on 8876 Progress: 3581 on 8876 Progress: 3582 on 8876 Progress: 3583 on 8876 Progress: 3584 on 8876 Progress: 3585 on 8876 Progress: 3586 on 8876 Progress: 3587 on 8876 Progress: 3588 on 8876 Progress: 3589 on 8876 Progress: 3590 on 8876 Progress: 3591 on 8876 Progress: 3592 on 8876 Progress: 3593 on 8876 Progress: 3594 on 8876 Progress: 3595 on 8876 Progress: 3596 on 8876 Progress: 3597 on 8876 Progress: 3598 on 8876 Progress: 3599 on 8876 Progress: 3600 on 8876 Progress: 3601 on 8876 Progress: 3602 on 8876 Progress: 3603 on 8876 Progress: 3604 on 8876 Progress: 3605 on 8876 Progress: 3606 on 8876 Progress: 3607 on 8876 Progress: 3608 on 8876 Progress: 3609 on 8876 Progress: 3610 on 8876 Progress: 3611 on 8876 Progress: 3612 on 8876 Progress: 3613 on 8876 Progress: 3614 on 8876 Progress: 3615 on 8876 Progress: 3616 on 8876 Progress: 3617 on 8876 Progress: 3618 on 8876 Progress: 3619 on 8876 Progress: 3620 on 8876 Progress: 3621 on 8876 Progress: 3622 on 8876 Progress: 3623 on 8876 Progress: 3624 on 8876 Progress: 3625 on 8876 Progress: 3626 on 8876 Progress: 3627 on 8876 Progress: 3628 on 8876 Progress: 3629 on 8876 Progress: 3630 on 8876 Progress: 3631 on 8876 Progress: 3632 on 8876 Progress: 3633 on 8876 Progress: 3634 on 8876 Progress: 3635 on 8876 Progress: 3636 on 8876 Progress: 3637 on 8876 Progress: 3638 on 8876 Progress: 3639 on 8876 Progress: 3640 on 8876 Progress: 3641 on 8876 Progress: 3642 on 8876 Progress: 3643 on 8876 Progress: 3644 on 8876 Progress: 3645 on 8876 Progress: 3646 on 8876 Progress: 3647 on 8876 Progress: 3648 on 8876 Progress: 3649 on 8876 Progress: 3650 on 8876 Progress: 3651 on 8876 Progress: 3652 on 8876 Progress: 3653 on 8876 Progress: 3654 on 8876 Progress: 3655 on 8876 Progress: 3656 on 8876 Progress: 3657 on 8876 Progress: 3658 on 8876 Progress: 3659 on 8876 Progress: 3660 on 8876 Progress: 3661 on 8876 Progress: 3662 on 8876 Progress: 3663 on 8876 Progress: 3664 on 8876 Progress: 3665 on 8876 Progress: 3666 on 8876 Progress: 3667 on 8876 Progress: 3668 on 8876 Progress: 3669 on 8876 Progress: 3670 on 8876 Progress: 3671 on 8876 Progress: 3672 on 8876 Progress: 3673 on 8876 Progress: 3674 on 8876 Progress: 3675 on 8876 Progress: 3676 on 8876 Progress: 3677 on 8876 Progress: 3678 on 8876 Progress: 3679 on 8876 Progress: 3680 on 8876 Progress: 3681 on 8876 Progress: 3682 on 8876 Progress: 3683 on 8876 Progress: 3684 on 8876 Progress: 3685 on 8876 Progress: 3686 on 8876 Progress: 3687 on 8876 Progress: 3688 on 8876 Progress: 3689 on 8876 Progress: 3690 on 8876 Progress: 3691 on 8876 Progress: 3692 on 8876 Progress: 3693 on 8876 Progress: 3694 on 8876 Progress: 3695 on 8876 Progress: 3696 on 8876 Progress: 3697 on 8876 Progress: 3698 on 8876 Progress: 3699 on 8876 Progress: 3700 on 8876 Progress: 3701 on 8876 Progress: 3702 on 8876 Progress: 3703 on 8876 Progress: 3704 on 8876 Progress: 3705 on 8876 Progress: 3706 on 8876 Progress: 3707 on 8876 Progress: 3708 on 8876 Progress: 3709 on 8876 Progress: 3710 on 8876 Progress: 3711 on 8876 Progress: 3712 on 8876 Progress: 3713 on 8876 Progress: 3714 on 8876 Progress: 3715 on 8876 Progress: 3716 on 8876 Progress: 3717 on 8876 Progress: 3718 on 8876 Progress: 3719 on 8876 Progress: 3720 on 8876 Progress: 3721 on 8876 Progress: 3722 on 8876 Progress: 3723 on 8876 Progress: 3724 on 8876 Progress: 3725 on 8876 Progress: 3726 on 8876 Progress: 3727 on 8876 Progress: 3728 on 8876 Progress: 3729 on 8876 Progress: 3730 on 8876 Progress: 3731 on 8876 Progress: 3732 on 8876 Progress: 3733 on 8876 Progress: 3734 on 8876 Progress: 3735 on 8876 Progress: 3736 on 8876 Progress: 3737 on 8876 Progress: 3738 on 8876 Progress: 3739 on 8876 Progress: 3740 on 8876 Progress: 3741 on 8876 Progress: 3742 on 8876 Progress: 3743 on 8876 Progress: 3744 on 8876 Progress: 3745 on 8876 Progress: 3746 on 8876 Progress: 3747 on 8876 Progress: 3748 on 8876 Progress: 3749 on 8876 Progress: 3750 on 8876 Progress: 3751 on 8876 Progress: 3752 on 8876 Progress: 3753 on 8876 Progress: 3754 on 8876 Progress: 3755 on 8876 Progress: 3756 on 8876 Progress: 3757 on 8876 Progress: 3758 on 8876 Progress: 3759 on 8876 Progress: 3760 on 8876 Progress: 3761 on 8876 Progress: 3762 on 8876 Progress: 3763 on 8876 Progress: 3764 on 8876 Progress: 3765 on 8876 Progress: 3766 on 8876 Progress: 3767 on 8876 Progress: 3768 on 8876 Progress: 3769 on 8876 Progress: 3770 on 8876 Progress: 3771 on 8876 Progress: 3772 on 8876 Progress: 3773 on 8876 Progress: 3774 on 8876 Progress: 3775 on 8876 Progress: 3776 on 8876 Progress: 3777 on 8876 Progress: 3778 on 8876 Progress: 3779 on 8876 Progress: 3780 on 8876 Progress: 3781 on 8876 Progress: 3782 on 8876 Progress: 3783 on 8876 Progress: 3784 on 8876 Progress: 3785 on 8876 Progress: 3786 on 8876 Progress: 3787 on 8876 Progress: 3788 on 8876 Progress: 3789 on 8876 Progress: 3790 on 8876 Progress: 3791 on 8876 Progress: 3792 on 8876 Progress: 3793 on 8876 Progress: 3794 on 8876 Progress: 3795 on 8876 Progress: 3796 on 8876 Progress: 3797 on 8876 Progress: 3798 on 8876 Progress: 3799 on 8876 Progress: 3800 on 8876 Progress: 3801 on 8876 Progress: 3802 on 8876 Progress: 3803 on 8876 Progress: 3804 on 8876 Progress: 3805 on 8876 Progress: 3806 on 8876 Progress: 3807 on 8876 Progress: 3808 on 8876 Progress: 3809 on 8876 Progress: 3810 on 8876 Progress: 3811 on 8876 Progress: 3812 on 8876 Progress: 3813 on 8876 Progress: 3814 on 8876 Progress: 3815 on 8876 Progress: 3816 on 8876 Progress: 3817 on 8876 Progress: 3818 on 8876 Progress: 3819 on 8876 Progress: 3820 on 8876 Progress: 3821 on 8876 Progress: 3822 on 8876 Progress: 3823 on 8876 Progress: 3824 on 8876 Progress: 3825 on 8876 Progress: 3826 on 8876 Progress: 3827 on 8876 Progress: 3828 on 8876 Progress: 3829 on 8876 Progress: 3830 on 8876 Progress: 3831 on 8876 Progress: 3832 on 8876 Progress: 3833 on 8876 Progress: 3834 on 8876 Progress: 3835 on 8876 Progress: 3836 on 8876 Progress: 3837 on 8876 Progress: 3838 on 8876 Progress: 3839 on 8876 Progress: 3840 on 8876 Progress: 3841 on 8876 Progress: 3842 on 8876 Progress: 3843 on 8876 Progress: 3844 on 8876 Progress: 3845 on 8876 Progress: 3846 on 8876 Progress: 3847 on 8876 Progress: 3848 on 8876 Progress: 3849 on 8876 Progress: 3850 on 8876 Progress: 3851 on 8876 Progress: 3852 on 8876 Progress: 3853 on 8876 Progress: 3854 on 8876 Progress: 3855 on 8876 Progress: 3856 on 8876 Progress: 3857 on 8876 Progress: 3858 on 8876 Progress: 3859 on 8876 Progress: 3860 on 8876 Progress: 3861 on 8876 Progress: 3862 on 8876 Progress: 3863 on 8876 Progress: 3864 on 8876 Progress: 3865 on 8876 Progress: 3866 on 8876 Progress: 3867 on 8876 Progress: 3868 on 8876 Progress: 3869 on 8876 Progress: 3870 on 8876 Progress: 3871 on 8876 Progress: 3872 on 8876 Progress: 3873 on 8876 Progress: 3874 on 8876 Progress: 3875 on 8876 Progress: 3876 on 8876 Progress: 3877 on 8876 Progress: 3878 on 8876 Progress: 3879 on 8876 Progress: 3880 on 8876 Progress: 3881 on 8876 Progress: 3882 on 8876 Progress: 3883 on 8876 Progress: 3884 on 8876 Progress: 3885 on 8876 Progress: 3886 on 8876 Progress: 3887 on 8876 Progress: 3888 on 8876 Progress: 3889 on 8876 Progress: 3890 on 8876 Progress: 3891 on 8876 Progress: 3892 on 8876 Progress: 3893 on 8876 Progress: 3894 on 8876 Progress: 3895 on 8876 Progress: 3896 on 8876 Progress: 3897 on 8876 Progress: 3898 on 8876 Progress: 3899 on 8876 Progress: 3900 on 8876 Progress: 3901 on 8876 Progress: 3902 on 8876 Progress: 3903 on 8876 Progress: 3904 on 8876 Progress: 3905 on 8876 Progress: 3906 on 8876 Progress: 3907 on 8876 Progress: 3908 on 8876 Progress: 3909 on 8876 Progress: 3910 on 8876 Progress: 3911 on 8876 Progress: 3912 on 8876 Progress: 3913 on 8876 Progress: 3914 on 8876 Progress: 3915 on 8876 Progress: 3916 on 8876 Progress: 3917 on 8876 Progress: 3918 on 8876 Progress: 3919 on 8876 Progress: 3920 on 8876 Progress: 3921 on 8876 Progress: 3922 on 8876 Progress: 3923 on 8876 Progress: 3924 on 8876 Progress: 3925 on 8876 Progress: 3926 on 8876 Progress: 3927 on 8876 Progress: 3928 on 8876 Progress: 3929 on 8876 Progress: 3930 on 8876 Progress: 3931 on 8876 Progress: 3932 on 8876 Progress: 3933 on 8876 Progress: 3934 on 8876 Progress: 3935 on 8876 Progress: 3936 on 8876 Progress: 3937 on 8876 Progress: 3938 on 8876 Progress: 3939 on 8876 Progress: 3940 on 8876 Progress: 3941 on 8876 Progress: 3942 on 8876 Progress: 3943 on 8876 Progress: 3944 on 8876 Progress: 3945 on 8876 Progress: 3946 on 8876 Progress: 3947 on 8876 Progress: 3948 on 8876 Progress: 3949 on 8876 Progress: 3950 on 8876 Progress: 3951 on 8876 Progress: 3952 on 8876 Progress: 3953 on 8876 Progress: 3954 on 8876 Progress: 3955 on 8876 Progress: 3956 on 8876 Progress: 3957 on 8876 Progress: 3958 on 8876 Progress: 3959 on 8876 Progress: 3960 on 8876 Progress: 3961 on 8876 Progress: 3962 on 8876 Progress: 3963 on 8876 Progress: 3964 on 8876 Progress: 3965 on 8876 Progress: 3966 on 8876 Progress: 3967 on 8876 Progress: 3968 on 8876 Progress: 3969 on 8876 Progress: 3970 on 8876 Progress: 3971 on 8876 Progress: 3972 on 8876 Progress: 3973 on 8876 Progress: 3974 on 8876 Progress: 3975 on 8876 Progress: 3976 on 8876 Progress: 3977 on 8876 Progress: 3978 on 8876 Progress: 3979 on 8876 Progress: 3980 on 8876 Progress: 3981 on 8876 Progress: 3982 on 8876 Progress: 3983 on 8876 Progress: 3984 on 8876 Progress: 3985 on 8876 Progress: 3986 on 8876 Progress: 3987 on 8876 Progress: 3988 on 8876 Progress: 3989 on 8876 Progress: 3990 on 8876 Progress: 3991 on 8876 Progress: 3992 on 8876 Progress: 3993 on 8876 Progress: 3994 on 8876 Progress: 3995 on 8876 Progress: 3996 on 8876 Progress: 3997 on 8876 Progress: 3998 on 8876 Progress: 3999 on 8876 Progress: 4000 on 8876 Progress: 4001 on 8876 Progress: 4002 on 8876 Progress: 4003 on 8876 Progress: 4004 on 8876 Progress: 4005 on 8876 Progress: 4006 on 8876 Progress: 4007 on 8876 Progress: 4008 on 8876 Progress: 4009 on 8876 Progress: 4010 on 8876 Progress: 4011 on 8876 Progress: 4012 on 8876 Progress: 4013 on 8876 Progress: 4014 on 8876 Progress: 4015 on 8876 Progress: 4016 on 8876 Progress: 4017 on 8876 Progress: 4018 on 8876 Progress: 4019 on 8876 Progress: 4020 on 8876 Progress: 4021 on 8876 Progress: 4022 on 8876 Progress: 4023 on 8876 Progress: 4024 on 8876 Progress: 4025 on 8876 Progress: 4026 on 8876 Progress: 4027 on 8876 Progress: 4028 on 8876 Progress: 4029 on 8876 Progress: 4030 on 8876 Progress: 4031 on 8876 Progress: 4032 on 8876 Progress: 4033 on 8876 Progress: 4034 on 8876 Progress: 4035 on 8876 Progress: 4036 on 8876 Progress: 4037 on 8876 Progress: 4038 on 8876 Progress: 4039 on 8876 Progress: 4040 on 8876 Progress: 4041 on 8876 Progress: 4042 on 8876 Progress: 4043 on 8876 Progress: 4044 on 8876 Progress: 4045 on 8876 Progress: 4046 on 8876 Progress: 4047 on 8876 Progress: 4048 on 8876 Progress: 4049 on 8876 Progress: 4050 on 8876 Progress: 4051 on 8876 Progress: 4052 on 8876 Progress: 4053 on 8876 Progress: 4054 on 8876 Progress: 4055 on 8876 Progress: 4056 on 8876 Progress: 4057 on 8876 Progress: 4058 on 8876 Progress: 4059 on 8876 Progress: 4060 on 8876 Progress: 4061 on 8876 Progress: 4062 on 8876 Progress: 4063 on 8876 Progress: 4064 on 8876 Progress: 4065 on 8876 Progress: 4066 on 8876 Progress: 4067 on 8876 Progress: 4068 on 8876 Progress: 4069 on 8876 Progress: 4070 on 8876 Progress: 4071 on 8876 Progress: 4072 on 8876 Progress: 4073 on 8876 Progress: 4074 on 8876 Progress: 4075 on 8876 Progress: 4076 on 8876 Progress: 4077 on 8876 Progress: 4078 on 8876 Progress: 4079 on 8876 Progress: 4080 on 8876 Progress: 4081 on 8876 Progress: 4082 on 8876 Progress: 4083 on 8876 Progress: 4084 on 8876 Progress: 4085 on 8876 Progress: 4086 on 8876 Progress: 4087 on 8876 Progress: 4088 on 8876 Progress: 4089 on 8876 Progress: 4090 on 8876 Progress: 4091 on 8876 Progress: 4092 on 8876 Progress: 4093 on 8876 Progress: 4094 on 8876 Progress: 4095 on 8876 Progress: 4096 on 8876 Progress: 4097 on 8876 Progress: 4098 on 8876 Progress: 4099 on 8876 Progress: 4100 on 8876 Progress: 4101 on 8876 Progress: 4102 on 8876 Progress: 4103 on 8876 Progress: 4104 on 8876 Progress: 4105 on 8876 Progress: 4106 on 8876 Progress: 4107 on 8876 Progress: 4108 on 8876 Progress: 4109 on 8876 Progress: 4110 on 8876 Progress: 4111 on 8876 Progress: 4112 on 8876 Progress: 4113 on 8876 Progress: 4114 on 8876 Progress: 4115 on 8876 Progress: 4116 on 8876 Progress: 4117 on 8876 Progress: 4118 on 8876 Progress: 4119 on 8876 Progress: 4120 on 8876 Progress: 4121 on 8876 Progress: 4122 on 8876 Progress: 4123 on 8876 Progress: 4124 on 8876 Progress: 4125 on 8876 Progress: 4126 on 8876 Progress: 4127 on 8876 Progress: 4128 on 8876 Progress: 4129 on 8876 Progress: 4130 on 8876 Progress: 4131 on 8876 Progress: 4132 on 8876 Progress: 4133 on 8876 Progress: 4134 on 8876 Progress: 4135 on 8876 Progress: 4136 on 8876 Progress: 4137 on 8876 Progress: 4138 on 8876 Progress: 4139 on 8876 Progress: 4140 on 8876 Progress: 4141 on 8876 Progress: 4142 on 8876 Progress: 4143 on 8876 Progress: 4144 on 8876 Progress: 4145 on 8876 Progress: 4146 on 8876 Progress: 4147 on 8876 Progress: 4148 on 8876 Progress: 4149 on 8876 Progress: 4150 on 8876 Progress: 4151 on 8876 Progress: 4152 on 8876 Progress: 4153 on 8876 Progress: 4154 on 8876 Progress: 4155 on 8876 Progress: 4156 on 8876 Progress: 4157 on 8876 Progress: 4158 on 8876 Progress: 4159 on 8876 Progress: 4160 on 8876 Progress: 4161 on 8876 Progress: 4162 on 8876 Progress: 4163 on 8876 Progress: 4164 on 8876 Progress: 4165 on 8876 Progress: 4166 on 8876 Progress: 4167 on 8876 Progress: 4168 on 8876 Progress: 4169 on 8876 Progress: 4170 on 8876 Progress: 4171 on 8876 Progress: 4172 on 8876 Progress: 4173 on 8876 Progress: 4174 on 8876 Progress: 4175 on 8876 Progress: 4176 on 8876 Progress: 4177 on 8876 Progress: 4178 on 8876 Progress: 4179 on 8876 Progress: 4180 on 8876 Progress: 4181 on 8876 Progress: 4182 on 8876 Progress: 4183 on 8876 Progress: 4184 on 8876 Progress: 4185 on 8876 Progress: 4186 on 8876 Progress: 4187 on 8876 Progress: 4188 on 8876 Progress: 4189 on 8876 Progress: 4190 on 8876 Progress: 4191 on 8876 Progress: 4192 on 8876 Progress: 4193 on 8876 Progress: 4194 on 8876 Progress: 4195 on 8876 Progress: 4196 on 8876 Progress: 4197 on 8876 Progress: 4198 on 8876 Progress: 4199 on 8876 Progress: 4200 on 8876 Progress: 4201 on 8876 Progress: 4202 on 8876 Progress: 4203 on 8876 Progress: 4204 on 8876 Progress: 4205 on 8876 Progress: 4206 on 8876 Progress: 4207 on 8876 Progress: 4208 on 8876 Progress: 4209 on 8876 Progress: 4210 on 8876 Progress: 4211 on 8876 Progress: 4212 on 8876 Progress: 4213 on 8876 Progress: 4214 on 8876 Progress: 4215 on 8876 Progress: 4216 on 8876 Progress: 4217 on 8876 Progress: 4218 on 8876 Progress: 4219 on 8876 Progress: 4220 on 8876 Progress: 4221 on 8876 Progress: 4222 on 8876 Progress: 4223 on 8876 Progress: 4224 on 8876 Progress: 4225 on 8876 Progress: 4226 on 8876 Progress: 4227 on 8876 Progress: 4228 on 8876 Progress: 4229 on 8876 Progress: 4230 on 8876 Progress: 4231 on 8876 Progress: 4232 on 8876 Progress: 4233 on 8876 Progress: 4234 on 8876 Progress: 4235 on 8876 Progress: 4236 on 8876 Progress: 4237 on 8876 Progress: 4238 on 8876 Progress: 4239 on 8876 Progress: 4240 on 8876 Progress: 4241 on 8876 Progress: 4242 on 8876 Progress: 4243 on 8876 Progress: 4244 on 8876 Progress: 4245 on 8876 Progress: 4246 on 8876 Progress: 4247 on 8876 Progress: 4248 on 8876 Progress: 4249 on 8876 Progress: 4250 on 8876 Progress: 4251 on 8876 Progress: 4252 on 8876 Progress: 4253 on 8876 Progress: 4254 on 8876 Progress: 4255 on 8876 Progress: 4256 on 8876 Progress: 4257 on 8876 Progress: 4258 on 8876 Progress: 4259 on 8876 Progress: 4260 on 8876 Progress: 4261 on 8876 Progress: 4262 on 8876 Progress: 4263 on 8876 Progress: 4264 on 8876 Progress: 4265 on 8876 Progress: 4266 on 8876 Progress: 4267 on 8876 Progress: 4268 on 8876 Progress: 4269 on 8876 Progress: 4270 on 8876 Progress: 4271 on 8876 Progress: 4272 on 8876 Progress: 4273 on 8876 Progress: 4274 on 8876 Progress: 4275 on 8876 Progress: 4276 on 8876 Progress: 4277 on 8876 Progress: 4278 on 8876 Progress: 4279 on 8876 Progress: 4280 on 8876 Progress: 4281 on 8876 Progress: 4282 on 8876 Progress: 4283 on 8876 Progress: 4284 on 8876 Progress: 4285 on 8876 Progress: 4286 on 8876 Progress: 4287 on 8876 Progress: 4288 on 8876 Progress: 4289 on 8876 Progress: 4290 on 8876 Progress: 4291 on 8876 Progress: 4292 on 8876 Progress: 4293 on 8876 Progress: 4294 on 8876 Progress: 4295 on 8876 Progress: 4296 on 8876 Progress: 4297 on 8876 Progress: 4298 on 8876 Progress: 4299 on 8876 Progress: 4300 on 8876 Progress: 4301 on 8876 Progress: 4302 on 8876 Progress: 4303 on 8876 Progress: 4304 on 8876 Progress: 4305 on 8876 Progress: 4306 on 8876 Progress: 4307 on 8876 Progress: 4308 on 8876 Progress: 4309 on 8876 Progress: 4310 on 8876 Progress: 4311 on 8876 Progress: 4312 on 8876 Progress: 4313 on 8876 Progress: 4314 on 8876 Progress: 4315 on 8876 Progress: 4316 on 8876 Progress: 4317 on 8876 Progress: 4318 on 8876 Progress: 4319 on 8876 Progress: 4320 on 8876 Progress: 4321 on 8876 Progress: 4322 on 8876 Progress: 4323 on 8876 Progress: 4324 on 8876 Progress: 4325 on 8876 Progress: 4326 on 8876 Progress: 4327 on 8876 Progress: 4328 on 8876 Progress: 4329 on 8876 Progress: 4330 on 8876 Progress: 4331 on 8876 Progress: 4332 on 8876 Progress: 4333 on 8876 Progress: 4334 on 8876 Progress: 4335 on 8876 Progress: 4336 on 8876 Progress: 4337 on 8876 Progress: 4338 on 8876 Progress: 4339 on 8876 Progress: 4340 on 8876 Progress: 4341 on 8876 Progress: 4342 on 8876 Progress: 4343 on 8876 Progress: 4344 on 8876 Progress: 4345 on 8876 Progress: 4346 on 8876 Progress: 4347 on 8876 Progress: 4348 on 8876 Progress: 4349 on 8876 Progress: 4350 on 8876 Progress: 4351 on 8876 Progress: 4352 on 8876 Progress: 4353 on 8876 Progress: 4354 on 8876 Progress: 4355 on 8876 Progress: 4356 on 8876 Progress: 4357 on 8876 Progress: 4358 on 8876 Progress: 4359 on 8876 Progress: 4360 on 8876 Progress: 4361 on 8876 Progress: 4362 on 8876 Progress: 4363 on 8876 Progress: 4364 on 8876 Progress: 4365 on 8876 Progress: 4366 on 8876 Progress: 4367 on 8876 Progress: 4368 on 8876 Progress: 4369 on 8876 Progress: 4370 on 8876 Progress: 4371 on 8876 Progress: 4372 on 8876 Progress: 4373 on 8876 Progress: 4374 on 8876 Progress: 4375 on 8876 Progress: 4376 on 8876 Progress: 4377 on 8876 Progress: 4378 on 8876 Progress: 4379 on 8876 Progress: 4380 on 8876 Progress: 4381 on 8876 Progress: 4382 on 8876 Progress: 4383 on 8876 Progress: 4384 on 8876 Progress: 4385 on 8876 Progress: 4386 on 8876 Progress: 4387 on 8876 Progress: 4388 on 8876 Progress: 4389 on 8876 Progress: 4390 on 8876 Progress: 4391 on 8876 Progress: 4392 on 8876 Progress: 4393 on 8876 Progress: 4394 on 8876 Progress: 4395 on 8876 Progress: 4396 on 8876 Progress: 4397 on 8876 Progress: 4398 on 8876 Progress: 4399 on 8876 Progress: 4400 on 8876 Progress: 4401 on 8876 Progress: 4402 on 8876 Progress: 4403 on 8876 Progress: 4404 on 8876 Progress: 4405 on 8876 Progress: 4406 on 8876 Progress: 4407 on 8876 Progress: 4408 on 8876 Progress: 4409 on 8876 Progress: 4410 on 8876 Progress: 4411 on 8876 Progress: 4412 on 8876 Progress: 4413 on 8876 Progress: 4414 on 8876 Progress: 4415 on 8876 Progress: 4416 on 8876 Progress: 4417 on 8876 Progress: 4418 on 8876 Progress: 4419 on 8876 Progress: 4420 on 8876 Progress: 4421 on 8876 Progress: 4422 on 8876 Progress: 4423 on 8876 Progress: 4424 on 8876 Progress: 4425 on 8876 Progress: 4426 on 8876 Progress: 4427 on 8876 Progress: 4428 on 8876 Progress: 4429 on 8876 Progress: 4430 on 8876 Progress: 4431 on 8876 Progress: 4432 on 8876 Progress: 4433 on 8876 Progress: 4434 on 8876 Progress: 4435 on 8876 Progress: 4436 on 8876 Progress: 4437 on 8876 Progress: 4438 on 8876 Progress: 4439 on 8876 Progress: 4440 on 8876 Progress: 4441 on 8876 Progress: 4442 on 8876 Progress: 4443 on 8876 Progress: 4444 on 8876 Progress: 4445 on 8876 Progress: 4446 on 8876 Progress: 4447 on 8876 Progress: 4448 on 8876 Progress: 4449 on 8876 Progress: 4450 on 8876 Progress: 4451 on 8876 Progress: 4452 on 8876 Progress: 4453 on 8876 Progress: 4454 on 8876 Progress: 4455 on 8876 Progress: 4456 on 8876 Progress: 4457 on 8876 Progress: 4458 on 8876 Progress: 4459 on 8876 Progress: 4460 on 8876 Progress: 4461 on 8876 Progress: 4462 on 8876 Progress: 4463 on 8876 Progress: 4464 on 8876 Progress: 4465 on 8876 Progress: 4466 on 8876 Progress: 4467 on 8876 Progress: 4468 on 8876 Progress: 4469 on 8876 Progress: 4470 on 8876 Progress: 4471 on 8876 Progress: 4472 on 8876 Progress: 4473 on 8876 Progress: 4474 on 8876 Progress: 4475 on 8876 Progress: 4476 on 8876 Progress: 4477 on 8876 Progress: 4478 on 8876 Progress: 4479 on 8876 Progress: 4480 on 8876 Progress: 4481 on 8876 Progress: 4482 on 8876 Progress: 4483 on 8876 Progress: 4484 on 8876 Progress: 4485 on 8876 Progress: 4486 on 8876 Progress: 4487 on 8876 Progress: 4488 on 8876 Progress: 4489 on 8876 Progress: 4490 on 8876 Progress: 4491 on 8876 Progress: 4492 on 8876 Progress: 4493 on 8876 Progress: 4494 on 8876 Progress: 4495 on 8876 Progress: 4496 on 8876 Progress: 4497 on 8876 Progress: 4498 on 8876 Progress: 4499 on 8876 Progress: 4500 on 8876 Progress: 4501 on 8876 Progress: 4502 on 8876 Progress: 4503 on 8876 Progress: 4504 on 8876 Progress: 4505 on 8876 Progress: 4506 on 8876 Progress: 4507 on 8876 Progress: 4508 on 8876 Progress: 4509 on 8876 Progress: 4510 on 8876 Progress: 4511 on 8876 Progress: 4512 on 8876 Progress: 4513 on 8876 Progress: 4514 on 8876 Progress: 4515 on 8876 Progress: 4516 on 8876 Progress: 4517 on 8876 Progress: 4518 on 8876 Progress: 4519 on 8876 Progress: 4520 on 8876 Progress: 4521 on 8876 Progress: 4522 on 8876 Progress: 4523 on 8876 Progress: 4524 on 8876 Progress: 4525 on 8876 Progress: 4526 on 8876 Progress: 4527 on 8876 Progress: 4528 on 8876 Progress: 4529 on 8876 Progress: 4530 on 8876 Progress: 4531 on 8876 Progress: 4532 on 8876 Progress: 4533 on 8876 Progress: 4534 on 8876 Progress: 4535 on 8876 Progress: 4536 on 8876 Progress: 4537 on 8876 Progress: 4538 on 8876 Progress: 4539 on 8876 Progress: 4540 on 8876 Progress: 4541 on 8876 Progress: 4542 on 8876 Progress: 4543 on 8876 Progress: 4544 on 8876 Progress: 4545 on 8876 Progress: 4546 on 8876 Progress: 4547 on 8876 Progress: 4548 on 8876 Progress: 4549 on 8876 Progress: 4550 on 8876 Progress: 4551 on 8876 Progress: 4552 on 8876 Progress: 4553 on 8876 Progress: 4554 on 8876 Progress: 4555 on 8876 Progress: 4556 on 8876 Progress: 4557 on 8876 Progress: 4558 on 8876 Progress: 4559 on 8876 Progress: 4560 on 8876 Progress: 4561 on 8876 Progress: 4562 on 8876 Progress: 4563 on 8876 Progress: 4564 on 8876 Progress: 4565 on 8876 Progress: 4566 on 8876 Progress: 4567 on 8876 Progress: 4568 on 8876 Progress: 4569 on 8876 Progress: 4570 on 8876 Progress: 4571 on 8876 Progress: 4572 on 8876 Progress: 4573 on 8876 Progress: 4574 on 8876 Progress: 4575 on 8876 Progress: 4576 on 8876 Progress: 4577 on 8876 Progress: 4578 on 8876 Progress: 4579 on 8876 Progress: 4580 on 8876 Progress: 4581 on 8876 Progress: 4582 on 8876 Progress: 4583 on 8876 Progress: 4584 on 8876 Progress: 4585 on 8876 Progress: 4586 on 8876 Progress: 4587 on 8876 Progress: 4588 on 8876 Progress: 4589 on 8876 Progress: 4590 on 8876 Progress: 4591 on 8876 Progress: 4592 on 8876 Progress: 4593 on 8876 Progress: 4594 on 8876 Progress: 4595 on 8876 Progress: 4596 on 8876 Progress: 4597 on 8876 Progress: 4598 on 8876 Progress: 4599 on 8876 Progress: 4600 on 8876 Progress: 4601 on 8876 Progress: 4602 on 8876 Progress: 4603 on 8876 Progress: 4604 on 8876 Progress: 4605 on 8876 Progress: 4606 on 8876 Progress: 4607 on 8876 Progress: 4608 on 8876 Progress: 4609 on 8876 Progress: 4610 on 8876 Progress: 4611 on 8876 Progress: 4612 on 8876 Progress: 4613 on 8876 Progress: 4614 on 8876 Progress: 4615 on 8876 Progress: 4616 on 8876 Progress: 4617 on 8876 Progress: 4618 on 8876 Progress: 4619 on 8876 Progress: 4620 on 8876 Progress: 4621 on 8876 Progress: 4622 on 8876 Progress: 4623 on 8876 Progress: 4624 on 8876 Progress: 4625 on 8876 Progress: 4626 on 8876 Progress: 4627 on 8876 Progress: 4628 on 8876 Progress: 4629 on 8876 Progress: 4630 on 8876 Progress: 4631 on 8876 Progress: 4632 on 8876 Progress: 4633 on 8876 Progress: 4634 on 8876 Progress: 4635 on 8876 Progress: 4636 on 8876 Progress: 4637 on 8876 Progress: 4638 on 8876 Progress: 4639 on 8876 Progress: 4640 on 8876 Progress: 4641 on 8876 Progress: 4642 on 8876 Progress: 4643 on 8876 Progress: 4644 on 8876 Progress: 4645 on 8876 Progress: 4646 on 8876 Progress: 4647 on 8876 Progress: 4648 on 8876 Progress: 4649 on 8876 Progress: 4650 on 8876 Progress: 4651 on 8876 Progress: 4652 on 8876 Progress: 4653 on 8876 Progress: 4654 on 8876 Progress: 4655 on 8876 Progress: 4656 on 8876 Progress: 4657 on 8876 Progress: 4658 on 8876 Progress: 4659 on 8876 Progress: 4660 on 8876 Progress: 4661 on 8876 Progress: 4662 on 8876 Progress: 4663 on 8876 Progress: 4664 on 8876 Progress: 4665 on 8876 Progress: 4666 on 8876 Progress: 4667 on 8876 Progress: 4668 on 8876 Progress: 4669 on 8876 Progress: 4670 on 8876 Progress: 4671 on 8876 Progress: 4672 on 8876 Progress: 4673 on 8876 Progress: 4674 on 8876 Progress: 4675 on 8876 Progress: 4676 on 8876 Progress: 4677 on 8876 Progress: 4678 on 8876 Progress: 4679 on 8876 Progress: 4680 on 8876 Progress: 4681 on 8876 Progress: 4682 on 8876 Progress: 4683 on 8876 Progress: 4684 on 8876 Progress: 4685 on 8876 Progress: 4686 on 8876 Progress: 4687 on 8876 Progress: 4688 on 8876 Progress: 4689 on 8876 Progress: 4690 on 8876 Progress: 4691 on 8876 Progress: 4692 on 8876 Progress: 4693 on 8876 Progress: 4694 on 8876 Progress: 4695 on 8876 Progress: 4696 on 8876 Progress: 4697 on 8876 Progress: 4698 on 8876 Progress: 4699 on 8876 Progress: 4700 on 8876 Progress: 4701 on 8876 Progress: 4702 on 8876 Progress: 4703 on 8876 Progress: 4704 on 8876 Progress: 4705 on 8876 Progress: 4706 on 8876 Progress: 4707 on 8876 Progress: 4708 on 8876 Progress: 4709 on 8876 Progress: 4710 on 8876 Progress: 4711 on 8876 Progress: 4712 on 8876 Progress: 4713 on 8876 Progress: 4714 on 8876 Progress: 4715 on 8876 Progress: 4716 on 8876 Progress: 4717 on 8876 Progress: 4718 on 8876 Progress: 4719 on 8876 Progress: 4720 on 8876 Progress: 4721 on 8876 Progress: 4722 on 8876 Progress: 4723 on 8876 Progress: 4724 on 8876 Progress: 4725 on 8876 Progress: 4726 on 8876 Progress: 4727 on 8876 Progress: 4728 on 8876 Progress: 4729 on 8876 Progress: 4730 on 8876 Progress: 4731 on 8876 Progress: 4732 on 8876 Progress: 4733 on 8876 Progress: 4734 on 8876 Progress: 4735 on 8876 Progress: 4736 on 8876 Progress: 4737 on 8876 Progress: 4738 on 8876 Progress: 4739 on 8876 Progress: 4740 on 8876 Progress: 4741 on 8876 Progress: 4742 on 8876 Progress: 4743 on 8876 Progress: 4744 on 8876 Progress: 4745 on 8876 Progress: 4746 on 8876 Progress: 4747 on 8876 Progress: 4748 on 8876 Progress: 4749 on 8876 Progress: 4750 on 8876 Progress: 4751 on 8876 Progress: 4752 on 8876 Progress: 4753 on 8876 Progress: 4754 on 8876 Progress: 4755 on 8876 Progress: 4756 on 8876 Progress: 4757 on 8876 Progress: 4758 on 8876 Progress: 4759 on 8876 Progress: 4760 on 8876 Progress: 4761 on 8876 Progress: 4762 on 8876 Progress: 4763 on 8876 Progress: 4764 on 8876 Progress: 4765 on 8876 Progress: 4766 on 8876 Progress: 4767 on 8876 Progress: 4768 on 8876 Progress: 4769 on 8876 Progress: 4770 on 8876 Progress: 4771 on 8876 Progress: 4772 on 8876 Progress: 4773 on 8876 Progress: 4774 on 8876 Progress: 4775 on 8876 Progress: 4776 on 8876 Progress: 4777 on 8876 Progress: 4778 on 8876 Progress: 4779 on 8876 Progress: 4780 on 8876 Progress: 4781 on 8876 Progress: 4782 on 8876 Progress: 4783 on 8876 Progress: 4784 on 8876 Progress: 4785 on 8876 Progress: 4786 on 8876 Progress: 4787 on 8876 Progress: 4788 on 8876 Progress: 4789 on 8876 Progress: 4790 on 8876 Progress: 4791 on 8876 Progress: 4792 on 8876 Progress: 4793 on 8876 Progress: 4794 on 8876 Progress: 4795 on 8876 Progress: 4796 on 8876 Progress: 4797 on 8876 Progress: 4798 on 8876 Progress: 4799 on 8876 Progress: 4800 on 8876 Progress: 4801 on 8876 Progress: 4802 on 8876 Progress: 4803 on 8876 Progress: 4804 on 8876 Progress: 4805 on 8876 Progress: 4806 on 8876 Progress: 4807 on 8876 Progress: 4808 on 8876 Progress: 4809 on 8876 Progress: 4810 on 8876 Progress: 4811 on 8876 Progress: 4812 on 8876 Progress: 4813 on 8876 Progress: 4814 on 8876 Progress: 4815 on 8876 Progress: 4816 on 8876 Progress: 4817 on 8876 Progress: 4818 on 8876 Progress: 4819 on 8876 Progress: 4820 on 8876 Progress: 4821 on 8876 Progress: 4822 on 8876 Progress: 4823 on 8876 Progress: 4824 on 8876 Progress: 4825 on 8876 Progress: 4826 on 8876 Progress: 4827 on 8876 Progress: 4828 on 8876 Progress: 4829 on 8876 Progress: 4830 on 8876 Progress: 4831 on 8876 Progress: 4832 on 8876 Progress: 4833 on 8876 Progress: 4834 on 8876 Progress: 4835 on 8876 Progress: 4836 on 8876 Progress: 4837 on 8876 Progress: 4838 on 8876 Progress: 4839 on 8876 Progress: 4840 on 8876 Progress: 4841 on 8876 Progress: 4842 on 8876 Progress: 4843 on 8876 Progress: 4844 on 8876 Progress: 4845 on 8876 Progress: 4846 on 8876 Progress: 4847 on 8876 Progress: 4848 on 8876 Progress: 4849 on 8876 Progress: 4850 on 8876 Progress: 4851 on 8876 Progress: 4852 on 8876 Progress: 4853 on 8876 Progress: 4854 on 8876 Progress: 4855 on 8876 Progress: 4856 on 8876 Progress: 4857 on 8876 Progress: 4858 on 8876 Progress: 4859 on 8876 Progress: 4860 on 8876 Progress: 4861 on 8876 Progress: 4862 on 8876 Progress: 4863 on 8876 Progress: 4864 on 8876 Progress: 4865 on 8876 Progress: 4866 on 8876 Progress: 4867 on 8876 Progress: 4868 on 8876 Progress: 4869 on 8876 Progress: 4870 on 8876 Progress: 4871 on 8876 Progress: 4872 on 8876 Progress: 4873 on 8876 Progress: 4874 on 8876 Progress: 4875 on 8876 Progress: 4876 on 8876 Progress: 4877 on 8876 Progress: 4878 on 8876 Progress: 4879 on 8876 Progress: 4880 on 8876 Progress: 4881 on 8876 Progress: 4882 on 8876 Progress: 4883 on 8876 Progress: 4884 on 8876 Progress: 4885 on 8876 Progress: 4886 on 8876 Progress: 4887 on 8876 Progress: 4888 on 8876 Progress: 4889 on 8876 Progress: 4890 on 8876 Progress: 4891 on 8876 Progress: 4892 on 8876 Progress: 4893 on 8876 Progress: 4894 on 8876 Progress: 4895 on 8876 Progress: 4896 on 8876 Progress: 4897 on 8876 Progress: 4898 on 8876 Progress: 4899 on 8876 Progress: 4900 on 8876 Progress: 4901 on 8876 Progress: 4902 on 8876 Progress: 4903 on 8876 Progress: 4904 on 8876 Progress: 4905 on 8876 Progress: 4906 on 8876 Progress: 4907 on 8876 Progress: 4908 on 8876 Progress: 4909 on 8876 Progress: 4910 on 8876 Progress: 4911 on 8876 Progress: 4912 on 8876 Progress: 4913 on 8876 Progress: 4914 on 8876 Progress: 4915 on 8876 Progress: 4916 on 8876 Progress: 4917 on 8876 Progress: 4918 on 8876 Progress: 4919 on 8876 Progress: 4920 on 8876 Progress: 4921 on 8876 Progress: 4922 on 8876 Progress: 4923 on 8876 Progress: 4924 on 8876 Progress: 4925 on 8876 Progress: 4926 on 8876 Progress: 4927 on 8876 Progress: 4928 on 8876 Progress: 4929 on 8876 Progress: 4930 on 8876 Progress: 4931 on 8876 Progress: 4932 on 8876 Progress: 4933 on 8876 Progress: 4934 on 8876 Progress: 4935 on 8876 Progress: 4936 on 8876 Progress: 4937 on 8876 Progress: 4938 on 8876 Progress: 4939 on 8876 Progress: 4940 on 8876 Progress: 4941 on 8876 Progress: 4942 on 8876 Progress: 4943 on 8876 Progress: 4944 on 8876 Progress: 4945 on 8876 Progress: 4946 on 8876 Progress: 4947 on 8876 Progress: 4948 on 8876 Progress: 4949 on 8876 Progress: 4950 on 8876 Progress: 4951 on 8876 Progress: 4952 on 8876 Progress: 4953 on 8876 Progress: 4954 on 8876 Progress: 4955 on 8876 Progress: 4956 on 8876 Progress: 4957 on 8876 Progress: 4958 on 8876 Progress: 4959 on 8876 Progress: 4960 on 8876 Progress: 4961 on 8876 Progress: 4962 on 8876 Progress: 4963 on 8876 Progress: 4964 on 8876 Progress: 4965 on 8876 Progress: 4966 on 8876 Progress: 4967 on 8876 Progress: 4968 on 8876 Progress: 4969 on 8876 Progress: 4970 on 8876 Progress: 4971 on 8876 Progress: 4972 on 8876 Progress: 4973 on 8876 Progress: 4974 on 8876 Progress: 4975 on 8876 Progress: 4976 on 8876 Progress: 4977 on 8876 Progress: 4978 on 8876 Progress: 4979 on 8876 Progress: 4980 on 8876 Progress: 4981 on 8876 Progress: 4982 on 8876 Progress: 4983 on 8876 Progress: 4984 on 8876 Progress: 4985 on 8876 Progress: 4986 on 8876 Progress: 4987 on 8876 Progress: 4988 on 8876 Progress: 4989 on 8876 Progress: 4990 on 8876 Progress: 4991 on 8876 Progress: 4992 on 8876 Progress: 4993 on 8876 Progress: 4994 on 8876 Progress: 4995 on 8876 Progress: 4996 on 8876 Progress: 4997 on 8876 Progress: 4998 on 8876 Progress: 4999 on 8876 Progress: 5000 on 8876 Progress: 5001 on 8876 Progress: 5002 on 8876 Progress: 5003 on 8876 Progress: 5004 on 8876 Progress: 5005 on 8876 Progress: 5006 on 8876 Progress: 5007 on 8876 Progress: 5008 on 8876 Progress: 5009 on 8876 Progress: 5010 on 8876 Progress: 5011 on 8876 Progress: 5012 on 8876 Progress: 5013 on 8876 Progress: 5014 on 8876 Progress: 5015 on 8876 Progress: 5016 on 8876 Progress: 5017 on 8876 Progress: 5018 on 8876 Progress: 5019 on 8876 Progress: 5020 on 8876 Progress: 5021 on 8876 Progress: 5022 on 8876 Progress: 5023 on 8876 Progress: 5024 on 8876 Progress: 5025 on 8876 Progress: 5026 on 8876 Progress: 5027 on 8876 Progress: 5028 on 8876 Progress: 5029 on 8876 Progress: 5030 on 8876 Progress: 5031 on 8876 Progress: 5032 on 8876 Progress: 5033 on 8876 Progress: 5034 on 8876 Progress: 5035 on 8876 Progress: 5036 on 8876 Progress: 5037 on 8876 Progress: 5038 on 8876 Progress: 5039 on 8876 Progress: 5040 on 8876 Progress: 5041 on 8876 Progress: 5042 on 8876 Progress: 5043 on 8876 Progress: 5044 on 8876 Progress: 5045 on 8876 Progress: 5046 on 8876 Progress: 5047 on 8876 Progress: 5048 on 8876 Progress: 5049 on 8876 Progress: 5050 on 8876 Progress: 5051 on 8876 Progress: 5052 on 8876 Progress: 5053 on 8876 Progress: 5054 on 8876 Progress: 5055 on 8876 Progress: 5056 on 8876 Progress: 5057 on 8876 Progress: 5058 on 8876 Progress: 5059 on 8876 Progress: 5060 on 8876 Progress: 5061 on 8876 Progress: 5062 on 8876 Progress: 5063 on 8876 Progress: 5064 on 8876 Progress: 5065 on 8876 Progress: 5066 on 8876 Progress: 5067 on 8876 Progress: 5068 on 8876 Progress: 5069 on 8876 Progress: 5070 on 8876 Progress: 5071 on 8876 Progress: 5072 on 8876 Progress: 5073 on 8876 Progress: 5074 on 8876 Progress: 5075 on 8876 Progress: 5076 on 8876 Progress: 5077 on 8876 Progress: 5078 on 8876 Progress: 5079 on 8876 Progress: 5080 on 8876 Progress: 5081 on 8876 Progress: 5082 on 8876 Progress: 5083 on 8876 Progress: 5084 on 8876 Progress: 5085 on 8876 Progress: 5086 on 8876 Progress: 5087 on 8876 Progress: 5088 on 8876 Progress: 5089 on 8876 Progress: 5090 on 8876 Progress: 5091 on 8876 Progress: 5092 on 8876 Progress: 5093 on 8876 Progress: 5094 on 8876 Progress: 5095 on 8876 Progress: 5096 on 8876 Progress: 5097 on 8876 Progress: 5098 on 8876 Progress: 5099 on 8876 Progress: 5100 on 8876 Progress: 5101 on 8876 Progress: 5102 on 8876 Progress: 5103 on 8876 Progress: 5104 on 8876 Progress: 5105 on 8876 Progress: 5106 on 8876 Progress: 5107 on 8876 Progress: 5108 on 8876 Progress: 5109 on 8876 Progress: 5110 on 8876 Progress: 5111 on 8876 Progress: 5112 on 8876 Progress: 5113 on 8876 Progress: 5114 on 8876 Progress: 5115 on 8876 Progress: 5116 on 8876 Progress: 5117 on 8876 Progress: 5118 on 8876 Progress: 5119 on 8876 Progress: 5120 on 8876 Progress: 5121 on 8876 Progress: 5122 on 8876 Progress: 5123 on 8876 Progress: 5124 on 8876 Progress: 5125 on 8876 Progress: 5126 on 8876 Progress: 5127 on 8876 Progress: 5128 on 8876 Progress: 5129 on 8876 Progress: 5130 on 8876 Progress: 5131 on 8876 Progress: 5132 on 8876 Progress: 5133 on 8876 Progress: 5134 on 8876 Progress: 5135 on 8876 Progress: 5136 on 8876 Progress: 5137 on 8876 Progress: 5138 on 8876 Progress: 5139 on 8876 Progress: 5140 on 8876 Progress: 5141 on 8876 Progress: 5142 on 8876 Progress: 5143 on 8876 Progress: 5144 on 8876 Progress: 5145 on 8876 Progress: 5146 on 8876 Progress: 5147 on 8876 Progress: 5148 on 8876 Progress: 5149 on 8876 Progress: 5150 on 8876 Progress: 5151 on 8876 Progress: 5152 on 8876 Progress: 5153 on 8876 Progress: 5154 on 8876 Progress: 5155 on 8876 Progress: 5156 on 8876 Progress: 5157 on 8876 Progress: 5158 on 8876 Progress: 5159 on 8876 Progress: 5160 on 8876 Progress: 5161 on 8876 Progress: 5162 on 8876 Progress: 5163 on 8876 Progress: 5164 on 8876 Progress: 5165 on 8876 Progress: 5166 on 8876 Progress: 5167 on 8876 Progress: 5168 on 8876 Progress: 5169 on 8876 Progress: 5170 on 8876 Progress: 5171 on 8876 Progress: 5172 on 8876 Progress: 5173 on 8876 Progress: 5174 on 8876 Progress: 5175 on 8876 Progress: 5176 on 8876 Progress: 5177 on 8876 Progress: 5178 on 8876 Progress: 5179 on 8876 Progress: 5180 on 8876 Progress: 5181 on 8876 Progress: 5182 on 8876 Progress: 5183 on 8876 Progress: 5184 on 8876 Progress: 5185 on 8876 Progress: 5186 on 8876 Progress: 5187 on 8876 Progress: 5188 on 8876 Progress: 5189 on 8876 Progress: 5190 on 8876 Progress: 5191 on 8876 Progress: 5192 on 8876 Progress: 5193 on 8876 Progress: 5194 on 8876 Progress: 5195 on 8876 Progress: 5196 on 8876 Progress: 5197 on 8876 Progress: 5198 on 8876 Progress: 5199 on 8876 Progress: 5200 on 8876 Progress: 5201 on 8876 Progress: 5202 on 8876 Progress: 5203 on 8876 Progress: 5204 on 8876 Progress: 5205 on 8876 Progress: 5206 on 8876 Progress: 5207 on 8876 Progress: 5208 on 8876 Progress: 5209 on 8876 Progress: 5210 on 8876 Progress: 5211 on 8876 Progress: 5212 on 8876 Progress: 5213 on 8876 Progress: 5214 on 8876 Progress: 5215 on 8876 Progress: 5216 on 8876 Progress: 5217 on 8876 Progress: 5218 on 8876 Progress: 5219 on 8876 Progress: 5220 on 8876 Progress: 5221 on 8876 Progress: 5222 on 8876 Progress: 5223 on 8876 Progress: 5224 on 8876 Progress: 5225 on 8876 Progress: 5226 on 8876 Progress: 5227 on 8876 Progress: 5228 on 8876 Progress: 5229 on 8876 Progress: 5230 on 8876 Progress: 5231 on 8876 Progress: 5232 on 8876 Progress: 5233 on 8876 Progress: 5234 on 8876 Progress: 5235 on 8876 Progress: 5236 on 8876 Progress: 5237 on 8876 Progress: 5238 on 8876 Progress: 5239 on 8876 Progress: 5240 on 8876 Progress: 5241 on 8876 Progress: 5242 on 8876 Progress: 5243 on 8876 Progress: 5244 on 8876 Progress: 5245 on 8876 Progress: 5246 on 8876 Progress: 5247 on 8876 Progress: 5248 on 8876 Progress: 5249 on 8876 Progress: 5250 on 8876 Progress: 5251 on 8876 Progress: 5252 on 8876 Progress: 5253 on 8876 Progress: 5254 on 8876 Progress: 5255 on 8876 Progress: 5256 on 8876 Progress: 5257 on 8876 Progress: 5258 on 8876 Progress: 5259 on 8876 Progress: 5260 on 8876 Progress: 5261 on 8876 Progress: 5262 on 8876 Progress: 5263 on 8876 Progress: 5264 on 8876 Progress: 5265 on 8876 Progress: 5266 on 8876 Progress: 5267 on 8876 Progress: 5268 on 8876 Progress: 5269 on 8876 Progress: 5270 on 8876 Progress: 5271 on 8876 Progress: 5272 on 8876 Progress: 5273 on 8876 Progress: 5274 on 8876 Progress: 5275 on 8876 Progress: 5276 on 8876 Progress: 5277 on 8876 Progress: 5278 on 8876 Progress: 5279 on 8876 Progress: 5280 on 8876 Progress: 5281 on 8876 Progress: 5282 on 8876 Progress: 5283 on 8876 Progress: 5284 on 8876 Progress: 5285 on 8876 Progress: 5286 on 8876 Progress: 5287 on 8876 Progress: 5288 on 8876 Progress: 5289 on 8876 Progress: 5290 on 8876 Progress: 5291 on 8876 Progress: 5292 on 8876 Progress: 5293 on 8876 Progress: 5294 on 8876 Progress: 5295 on 8876 Progress: 5296 on 8876 Progress: 5297 on 8876 Progress: 5298 on 8876 Progress: 5299 on 8876 Progress: 5300 on 8876 Progress: 5301 on 8876 Progress: 5302 on 8876 Progress: 5303 on 8876 Progress: 5304 on 8876 Progress: 5305 on 8876 Progress: 5306 on 8876 Progress: 5307 on 8876 Progress: 5308 on 8876 Progress: 5309 on 8876 Progress: 5310 on 8876 Progress: 5311 on 8876 Progress: 5312 on 8876 Progress: 5313 on 8876 Progress: 5314 on 8876 Progress: 5315 on 8876 Progress: 5316 on 8876 Progress: 5317 on 8876 Progress: 5318 on 8876 Progress: 5319 on 8876 Progress: 5320 on 8876 Progress: 5321 on 8876 Progress: 5322 on 8876 Progress: 5323 on 8876 Progress: 5324 on 8876 Progress: 5325 on 8876 Progress: 5326 on 8876 Progress: 5327 on 8876 Progress: 5328 on 8876 Progress: 5329 on 8876 Progress: 5330 on 8876 Progress: 5331 on 8876 Progress: 5332 on 8876 Progress: 5333 on 8876 Progress: 5334 on 8876 Progress: 5335 on 8876 Progress: 5336 on 8876 Progress: 5337 on 8876 Progress: 5338 on 8876 Progress: 5339 on 8876 Progress: 5340 on 8876 Progress: 5341 on 8876 Progress: 5342 on 8876 Progress: 5343 on 8876 Progress: 5344 on 8876 Progress: 5345 on 8876 Progress: 5346 on 8876 Progress: 5347 on 8876 Progress: 5348 on 8876 Progress: 5349 on 8876 Progress: 5350 on 8876 Progress: 5351 on 8876 Progress: 5352 on 8876 Progress: 5353 on 8876 Progress: 5354 on 8876 Progress: 5355 on 8876 Progress: 5356 on 8876 Progress: 5357 on 8876 Progress: 5358 on 8876 Progress: 5359 on 8876 Progress: 5360 on 8876 Progress: 5361 on 8876 Progress: 5362 on 8876 Progress: 5363 on 8876 Progress: 5364 on 8876 Progress: 5365 on 8876 Progress: 5366 on 8876 Progress: 5367 on 8876 Progress: 5368 on 8876 Progress: 5369 on 8876 Progress: 5370 on 8876 Progress: 5371 on 8876 Progress: 5372 on 8876 Progress: 5373 on 8876 Progress: 5374 on 8876 Progress: 5375 on 8876 Progress: 5376 on 8876 Progress: 5377 on 8876 Progress: 5378 on 8876 Progress: 5379 on 8876 Progress: 5380 on 8876 Progress: 5381 on 8876 Progress: 5382 on 8876 Progress: 5383 on 8876 Progress: 5384 on 8876 Progress: 5385 on 8876 Progress: 5386 on 8876 Progress: 5387 on 8876 Progress: 5388 on 8876 Progress: 5389 on 8876 Progress: 5390 on 8876 Progress: 5391 on 8876 Progress: 5392 on 8876 Progress: 5393 on 8876 Progress: 5394 on 8876 Progress: 5395 on 8876 Progress: 5396 on 8876 Progress: 5397 on 8876 Progress: 5398 on 8876 Progress: 5399 on 8876 Progress: 5400 on 8876 Progress: 5401 on 8876 Progress: 5402 on 8876 Progress: 5403 on 8876 Progress: 5404 on 8876 Progress: 5405 on 8876 Progress: 5406 on 8876 Progress: 5407 on 8876 Progress: 5408 on 8876 Progress: 5409 on 8876 Progress: 5410 on 8876 Progress: 5411 on 8876 Progress: 5412 on 8876 Progress: 5413 on 8876 Progress: 5414 on 8876 Progress: 5415 on 8876 Progress: 5416 on 8876 Progress: 5417 on 8876 Progress: 5418 on 8876 Progress: 5419 on 8876 Progress: 5420 on 8876 Progress: 5421 on 8876 Progress: 5422 on 8876 Progress: 5423 on 8876 Progress: 5424 on 8876 Progress: 5425 on 8876 Progress: 5426 on 8876 Progress: 5427 on 8876 Progress: 5428 on 8876 Progress: 5429 on 8876 Progress: 5430 on 8876 Progress: 5431 on 8876 Progress: 5432 on 8876 Progress: 5433 on 8876 Progress: 5434 on 8876 Progress: 5435 on 8876 Progress: 5436 on 8876 Progress: 5437 on 8876 Progress: 5438 on 8876 Progress: 5439 on 8876 Progress: 5440 on 8876 Progress: 5441 on 8876 Progress: 5442 on 8876 Progress: 5443 on 8876 Progress: 5444 on 8876 Progress: 5445 on 8876 Progress: 5446 on 8876 Progress: 5447 on 8876 Progress: 5448 on 8876 Progress: 5449 on 8876 Progress: 5450 on 8876 Progress: 5451 on 8876 Progress: 5452 on 8876 Progress: 5453 on 8876 Progress: 5454 on 8876 Progress: 5455 on 8876 Progress: 5456 on 8876 Progress: 5457 on 8876 Progress: 5458 on 8876 Progress: 5459 on 8876 Progress: 5460 on 8876 Progress: 5461 on 8876 Progress: 5462 on 8876 Progress: 5463 on 8876 Progress: 5464 on 8876 Progress: 5465 on 8876 Progress: 5466 on 8876 Progress: 5467 on 8876 Progress: 5468 on 8876 Progress: 5469 on 8876 Progress: 5470 on 8876 Progress: 5471 on 8876 Progress: 5472 on 8876 Progress: 5473 on 8876 Progress: 5474 on 8876 Progress: 5475 on 8876 Progress: 5476 on 8876 Progress: 5477 on 8876 Progress: 5478 on 8876 Progress: 5479 on 8876 Progress: 5480 on 8876 Progress: 5481 on 8876 Progress: 5482 on 8876 Progress: 5483 on 8876 Progress: 5484 on 8876 Progress: 5485 on 8876 Progress: 5486 on 8876 Progress: 5487 on 8876 Progress: 5488 on 8876 Progress: 5489 on 8876 Progress: 5490 on 8876 Progress: 5491 on 8876 Progress: 5492 on 8876 Progress: 5493 on 8876 Progress: 5494 on 8876 Progress: 5495 on 8876 Progress: 5496 on 8876 Progress: 5497 on 8876 Progress: 5498 on 8876 Progress: 5499 on 8876 Progress: 5500 on 8876 Progress: 5501 on 8876 Progress: 5502 on 8876 Progress: 5503 on 8876 Progress: 5504 on 8876 Progress: 5505 on 8876 Progress: 5506 on 8876 Progress: 5507 on 8876 Progress: 5508 on 8876 Progress: 5509 on 8876 Progress: 5510 on 8876 Progress: 5511 on 8876 Progress: 5512 on 8876 Progress: 5513 on 8876 Progress: 5514 on 8876 Progress: 5515 on 8876 Progress: 5516 on 8876 Progress: 5517 on 8876 Progress: 5518 on 8876 Progress: 5519 on 8876 Progress: 5520 on 8876 Progress: 5521 on 8876 Progress: 5522 on 8876 Progress: 5523 on 8876 Progress: 5524 on 8876 Progress: 5525 on 8876 Progress: 5526 on 8876 Progress: 5527 on 8876 Progress: 5528 on 8876 Progress: 5529 on 8876 Progress: 5530 on 8876 Progress: 5531 on 8876 Progress: 5532 on 8876 Progress: 5533 on 8876 Progress: 5534 on 8876 Progress: 5535 on 8876 Progress: 5536 on 8876 Progress: 5537 on 8876 Progress: 5538 on 8876 Progress: 5539 on 8876 Progress: 5540 on 8876 Progress: 5541 on 8876 Progress: 5542 on 8876 Progress: 5543 on 8876 Progress: 5544 on 8876 Progress: 5545 on 8876 Progress: 5546 on 8876 Progress: 5547 on 8876 Progress: 5548 on 8876 Progress: 5549 on 8876 Progress: 5550 on 8876 Progress: 5551 on 8876 Progress: 5552 on 8876 Progress: 5553 on 8876 Progress: 5554 on 8876 Progress: 5555 on 8876 Progress: 5556 on 8876 Progress: 5557 on 8876 Progress: 5558 on 8876 Progress: 5559 on 8876 Progress: 5560 on 8876 Progress: 5561 on 8876 Progress: 5562 on 8876 Progress: 5563 on 8876 Progress: 5564 on 8876 Progress: 5565 on 8876 Progress: 5566 on 8876 Progress: 5567 on 8876 Progress: 5568 on 8876 Progress: 5569 on 8876 Progress: 5570 on 8876 Progress: 5571 on 8876 Progress: 5572 on 8876 Progress: 5573 on 8876 Progress: 5574 on 8876 Progress: 5575 on 8876 Progress: 5576 on 8876 Progress: 5577 on 8876 Progress: 5578 on 8876 Progress: 5579 on 8876 Progress: 5580 on 8876 Progress: 5581 on 8876 Progress: 5582 on 8876 Progress: 5583 on 8876 Progress: 5584 on 8876 Progress: 5585 on 8876 Progress: 5586 on 8876 Progress: 5587 on 8876 Progress: 5588 on 8876 Progress: 5589 on 8876 Progress: 5590 on 8876 Progress: 5591 on 8876 Progress: 5592 on 8876 Progress: 5593 on 8876 Progress: 5594 on 8876 Progress: 5595 on 8876 Progress: 5596 on 8876 Progress: 5597 on 8876 Progress: 5598 on 8876 Progress: 5599 on 8876 Progress: 5600 on 8876 Progress: 5601 on 8876 Progress: 5602 on 8876 Progress: 5603 on 8876 Progress: 5604 on 8876 Progress: 5605 on 8876 Progress: 5606 on 8876 Progress: 5607 on 8876 Progress: 5608 on 8876 Progress: 5609 on 8876 Progress: 5610 on 8876 Progress: 5611 on 8876 Progress: 5612 on 8876 Progress: 5613 on 8876 Progress: 5614 on 8876 Progress: 5615 on 8876 Progress: 5616 on 8876 Progress: 5617 on 8876 Progress: 5618 on 8876 Progress: 5619 on 8876 Progress: 5620 on 8876 Progress: 5621 on 8876 Progress: 5622 on 8876 Progress: 5623 on 8876 Progress: 5624 on 8876 Progress: 5625 on 8876 Progress: 5626 on 8876 Progress: 5627 on 8876 Progress: 5628 on 8876 Progress: 5629 on 8876 Progress: 5630 on 8876 Progress: 5631 on 8876 Progress: 5632 on 8876 Progress: 5633 on 8876 Progress: 5634 on 8876 Progress: 5635 on 8876 Progress: 5636 on 8876 Progress: 5637 on 8876 Progress: 5638 on 8876 Progress: 5639 on 8876 Progress: 5640 on 8876 Progress: 5641 on 8876 Progress: 5642 on 8876 Progress: 5643 on 8876 Progress: 5644 on 8876 Progress: 5645 on 8876 Progress: 5646 on 8876 Progress: 5647 on 8876 Progress: 5648 on 8876 Progress: 5649 on 8876 Progress: 5650 on 8876 Progress: 5651 on 8876 Progress: 5652 on 8876 Progress: 5653 on 8876 Progress: 5654 on 8876 Progress: 5655 on 8876 Progress: 5656 on 8876 Progress: 5657 on 8876 Progress: 5658 on 8876 Progress: 5659 on 8876 Progress: 5660 on 8876 Progress: 5661 on 8876 Progress: 5662 on 8876 Progress: 5663 on 8876 Progress: 5664 on 8876 Progress: 5665 on 8876 Progress: 5666 on 8876 Progress: 5667 on 8876 Progress: 5668 on 8876 Progress: 5669 on 8876 Progress: 5670 on 8876 Progress: 5671 on 8876 Progress: 5672 on 8876 Progress: 5673 on 8876 Progress: 5674 on 8876 Progress: 5675 on 8876 Progress: 5676 on 8876 Progress: 5677 on 8876 Progress: 5678 on 8876 Progress: 5679 on 8876 Progress: 5680 on 8876 Progress: 5681 on 8876 Progress: 5682 on 8876 Progress: 5683 on 8876 Progress: 5684 on 8876 Progress: 5685 on 8876 Progress: 5686 on 8876 Progress: 5687 on 8876 Progress: 5688 on 8876 Progress: 5689 on 8876 Progress: 5690 on 8876 Progress: 5691 on 8876 Progress: 5692 on 8876 Progress: 5693 on 8876 Progress: 5694 on 8876 Progress: 5695 on 8876 Progress: 5696 on 8876 Progress: 5697 on 8876 Progress: 5698 on 8876 Progress: 5699 on 8876 Progress: 5700 on 8876 Progress: 5701 on 8876 Progress: 5702 on 8876 Progress: 5703 on 8876 Progress: 5704 on 8876 Progress: 5705 on 8876 Progress: 5706 on 8876 Progress: 5707 on 8876 Progress: 5708 on 8876 Progress: 5709 on 8876 Progress: 5710 on 8876 Progress: 5711 on 8876 Progress: 5712 on 8876 Progress: 5713 on 8876 Progress: 5714 on 8876 Progress: 5715 on 8876 Progress: 5716 on 8876 Progress: 5717 on 8876 Progress: 5718 on 8876 Progress: 5719 on 8876 Progress: 5720 on 8876 Progress: 5721 on 8876 Progress: 5722 on 8876 Progress: 5723 on 8876 Progress: 5724 on 8876 Progress: 5725 on 8876 Progress: 5726 on 8876 Progress: 5727 on 8876 Progress: 5728 on 8876 Progress: 5729 on 8876 Progress: 5730 on 8876 Progress: 5731 on 8876 Progress: 5732 on 8876 Progress: 5733 on 8876 Progress: 5734 on 8876 Progress: 5735 on 8876 Progress: 5736 on 8876 Progress: 5737 on 8876 Progress: 5738 on 8876 Progress: 5739 on 8876 Progress: 5740 on 8876 Progress: 5741 on 8876 Progress: 5742 on 8876 Progress: 5743 on 8876 Progress: 5744 on 8876 Progress: 5745 on 8876 Progress: 5746 on 8876 Progress: 5747 on 8876 Progress: 5748 on 8876 Progress: 5749 on 8876 Progress: 5750 on 8876 Progress: 5751 on 8876 Progress: 5752 on 8876 Progress: 5753 on 8876 Progress: 5754 on 8876 Progress: 5755 on 8876 Progress: 5756 on 8876 Progress: 5757 on 8876 Progress: 5758 on 8876 Progress: 5759 on 8876 Progress: 5760 on 8876 Progress: 5761 on 8876 Progress: 5762 on 8876 Progress: 5763 on 8876 Progress: 5764 on 8876 Progress: 5765 on 8876 Progress: 5766 on 8876 Progress: 5767 on 8876 Progress: 5768 on 8876 Progress: 5769 on 8876 Progress: 5770 on 8876 Progress: 5771 on 8876 Progress: 5772 on 8876 Progress: 5773 on 8876 Progress: 5774 on 8876 Progress: 5775 on 8876 Progress: 5776 on 8876 Progress: 5777 on 8876 Progress: 5778 on 8876 Progress: 5779 on 8876 Progress: 5780 on 8876 Progress: 5781 on 8876 Progress: 5782 on 8876 Progress: 5783 on 8876 Progress: 5784 on 8876 Progress: 5785 on 8876 Progress: 5786 on 8876 Progress: 5787 on 8876 Progress: 5788 on 8876 Progress: 5789 on 8876 Progress: 5790 on 8876 Progress: 5791 on 8876 Progress: 5792 on 8876 Progress: 5793 on 8876 Progress: 5794 on 8876 Progress: 5795 on 8876 Progress: 5796 on 8876 Progress: 5797 on 8876 Progress: 5798 on 8876 Progress: 5799 on 8876 Progress: 5800 on 8876 Progress: 5801 on 8876 Progress: 5802 on 8876 Progress: 5803 on 8876 Progress: 5804 on 8876 Progress: 5805 on 8876 Progress: 5806 on 8876 Progress: 5807 on 8876 Progress: 5808 on 8876 Progress: 5809 on 8876 Progress: 5810 on 8876 Progress: 5811 on 8876 Progress: 5812 on 8876 Progress: 5813 on 8876 Progress: 5814 on 8876 Progress: 5815 on 8876 Progress: 5816 on 8876 Progress: 5817 on 8876 Progress: 5818 on 8876 Progress: 5819 on 8876 Progress: 5820 on 8876 Progress: 5821 on 8876 Progress: 5822 on 8876 Progress: 5823 on 8876 Progress: 5824 on 8876 Progress: 5825 on 8876 Progress: 5826 on 8876 Progress: 5827 on 8876 Progress: 5828 on 8876 Progress: 5829 on 8876 Progress: 5830 on 8876 Progress: 5831 on 8876 Progress: 5832 on 8876 Progress: 5833 on 8876 Progress: 5834 on 8876 Progress: 5835 on 8876 Progress: 5836 on 8876 Progress: 5837 on 8876 Progress: 5838 on 8876 Progress: 5839 on 8876 Progress: 5840 on 8876 Progress: 5841 on 8876 Progress: 5842 on 8876 Progress: 5843 on 8876 Progress: 5844 on 8876 Progress: 5845 on 8876 Progress: 5846 on 8876 Progress: 5847 on 8876 Progress: 5848 on 8876 Progress: 5849 on 8876 Progress: 5850 on 8876 Progress: 5851 on 8876 Progress: 5852 on 8876 Progress: 5853 on 8876 Progress: 5854 on 8876 Progress: 5855 on 8876 Progress: 5856 on 8876 Progress: 5857 on 8876 Progress: 5858 on 8876 Progress: 5859 on 8876 Progress: 5860 on 8876 Progress: 5861 on 8876 Progress: 5862 on 8876 Progress: 5863 on 8876 Progress: 5864 on 8876 Progress: 5865 on 8876 Progress: 5866 on 8876 Progress: 5867 on 8876 Progress: 5868 on 8876 Progress: 5869 on 8876 Progress: 5870 on 8876 Progress: 5871 on 8876 Progress: 5872 on 8876 Progress: 5873 on 8876 Progress: 5874 on 8876 Progress: 5875 on 8876 Progress: 5876 on 8876 Progress: 5877 on 8876 Progress: 5878 on 8876 Progress: 5879 on 8876 Progress: 5880 on 8876 Progress: 5881 on 8876 Progress: 5882 on 8876 Progress: 5883 on 8876 Progress: 5884 on 8876 Progress: 5885 on 8876 Progress: 5886 on 8876 Progress: 5887 on 8876 Progress: 5888 on 8876 Progress: 5889 on 8876 Progress: 5890 on 8876 Progress: 5891 on 8876 Progress: 5892 on 8876 Progress: 5893 on 8876 Progress: 5894 on 8876 Progress: 5895 on 8876 Progress: 5896 on 8876 Progress: 5897 on 8876 Progress: 5898 on 8876 Progress: 5899 on 8876 Progress: 5900 on 8876 Progress: 5901 on 8876 Progress: 5902 on 8876 Progress: 5903 on 8876 Progress: 5904 on 8876 Progress: 5905 on 8876 Progress: 5906 on 8876 Progress: 5907 on 8876 Progress: 5908 on 8876 Progress: 5909 on 8876 Progress: 5910 on 8876 Progress: 5911 on 8876 Progress: 5912 on 8876 Progress: 5913 on 8876 Progress: 5914 on 8876 Progress: 5915 on 8876 Progress: 5916 on 8876 Progress: 5917 on 8876 Progress: 5918 on 8876 Progress: 5919 on 8876 Progress: 5920 on 8876 Progress: 5921 on 8876 Progress: 5922 on 8876 Progress: 5923 on 8876 Progress: 5924 on 8876 Progress: 5925 on 8876 Progress: 5926 on 8876 Progress: 5927 on 8876 Progress: 5928 on 8876 Progress: 5929 on 8876 Progress: 5930 on 8876 Progress: 5931 on 8876 Progress: 5932 on 8876 Progress: 5933 on 8876 Progress: 5934 on 8876 Progress: 5935 on 8876 Progress: 5936 on 8876 Progress: 5937 on 8876 Progress: 5938 on 8876 Progress: 5939 on 8876 Progress: 5940 on 8876 Progress: 5941 on 8876 Progress: 5942 on 8876 Progress: 5943 on 8876 Progress: 5944 on 8876 Progress: 5945 on 8876 Progress: 5946 on 8876 Progress: 5947 on 8876 Progress: 5948 on 8876 Progress: 5949 on 8876 Progress: 5950 on 8876 Progress: 5951 on 8876 Progress: 5952 on 8876 Progress: 5953 on 8876 Progress: 5954 on 8876 Progress: 5955 on 8876 Progress: 5956 on 8876 Progress: 5957 on 8876 Progress: 5958 on 8876 Progress: 5959 on 8876 Progress: 5960 on 8876 Progress: 5961 on 8876 Progress: 5962 on 8876 Progress: 5963 on 8876 Progress: 5964 on 8876 Progress: 5965 on 8876 Progress: 5966 on 8876 Progress: 5967 on 8876 Progress: 5968 on 8876 Progress: 5969 on 8876 Progress: 5970 on 8876 Progress: 5971 on 8876 Progress: 5972 on 8876 Progress: 5973 on 8876 Progress: 5974 on 8876 Progress: 5975 on 8876 Progress: 5976 on 8876 Progress: 5977 on 8876 Progress: 5978 on 8876 Progress: 5979 on 8876 Progress: 5980 on 8876 Progress: 5981 on 8876 Progress: 5982 on 8876 Progress: 5983 on 8876 Progress: 5984 on 8876 Progress: 5985 on 8876 Progress: 5986 on 8876 Progress: 5987 on 8876 Progress: 5988 on 8876 Progress: 5989 on 8876 Progress: 5990 on 8876 Progress: 5991 on 8876 Progress: 5992 on 8876 Progress: 5993 on 8876 Progress: 5994 on 8876 Progress: 5995 on 8876 Progress: 5996 on 8876 Progress: 5997 on 8876 Progress: 5998 on 8876 Progress: 5999 on 8876 Progress: 6000 on 8876 Progress: 6001 on 8876 Progress: 6002 on 8876 Progress: 6003 on 8876 Progress: 6004 on 8876 Progress: 6005 on 8876 Progress: 6006 on 8876 Progress: 6007 on 8876 Progress: 6008 on 8876 Progress: 6009 on 8876 Progress: 6010 on 8876 Progress: 6011 on 8876 Progress: 6012 on 8876 Progress: 6013 on 8876 Progress: 6014 on 8876 Progress: 6015 on 8876 Progress: 6016 on 8876 Progress: 6017 on 8876 Progress: 6018 on 8876 Progress: 6019 on 8876 Progress: 6020 on 8876 Progress: 6021 on 8876 Progress: 6022 on 8876 Progress: 6023 on 8876 Progress: 6024 on 8876 Progress: 6025 on 8876 Progress: 6026 on 8876 Progress: 6027 on 8876 Progress: 6028 on 8876 Progress: 6029 on 8876 Progress: 6030 on 8876 Progress: 6031 on 8876 Progress: 6032 on 8876 Progress: 6033 on 8876 Progress: 6034 on 8876 Progress: 6035 on 8876 Progress: 6036 on 8876 Progress: 6037 on 8876 Progress: 6038 on 8876 Progress: 6039 on 8876 Progress: 6040 on 8876 Progress: 6041 on 8876 Progress: 6042 on 8876 Progress: 6043 on 8876 Progress: 6044 on 8876 Progress: 6045 on 8876 Progress: 6046 on 8876 Progress: 6047 on 8876 Progress: 6048 on 8876 Progress: 6049 on 8876 Progress: 6050 on 8876 Progress: 6051 on 8876 Progress: 6052 on 8876 Progress: 6053 on 8876 Progress: 6054 on 8876 Progress: 6055 on 8876 Progress: 6056 on 8876 Progress: 6057 on 8876 Progress: 6058 on 8876 Progress: 6059 on 8876 Progress: 6060 on 8876 Progress: 6061 on 8876 Progress: 6062 on 8876 Progress: 6063 on 8876 Progress: 6064 on 8876 Progress: 6065 on 8876 Progress: 6066 on 8876 Progress: 6067 on 8876 Progress: 6068 on 8876 Progress: 6069 on 8876 Progress: 6070 on 8876 Progress: 6071 on 8876 Progress: 6072 on 8876 Progress: 6073 on 8876 Progress: 6074 on 8876 Progress: 6075 on 8876 Progress: 6076 on 8876 Progress: 6077 on 8876 Progress: 6078 on 8876 Progress: 6079 on 8876 Progress: 6080 on 8876 Progress: 6081 on 8876 Progress: 6082 on 8876 Progress: 6083 on 8876 Progress: 6084 on 8876 Progress: 6085 on 8876 Progress: 6086 on 8876 Progress: 6087 on 8876 Progress: 6088 on 8876 Progress: 6089 on 8876 Progress: 6090 on 8876 Progress: 6091 on 8876 Progress: 6092 on 8876 Progress: 6093 on 8876 Progress: 6094 on 8876 Progress: 6095 on 8876 Progress: 6096 on 8876 Progress: 6097 on 8876 Progress: 6098 on 8876 Progress: 6099 on 8876 Progress: 6100 on 8876 Progress: 6101 on 8876 Progress: 6102 on 8876 Progress: 6103 on 8876 Progress: 6104 on 8876 Progress: 6105 on 8876 Progress: 6106 on 8876 Progress: 6107 on 8876 Progress: 6108 on 8876 Progress: 6109 on 8876 Progress: 6110 on 8876 Progress: 6111 on 8876 Progress: 6112 on 8876 Progress: 6113 on 8876 Progress: 6114 on 8876 Progress: 6115 on 8876 Progress: 6116 on 8876 Progress: 6117 on 8876 Progress: 6118 on 8876 Progress: 6119 on 8876 Progress: 6120 on 8876 Progress: 6121 on 8876 Progress: 6122 on 8876 Progress: 6123 on 8876 Progress: 6124 on 8876 Progress: 6125 on 8876 Progress: 6126 on 8876 Progress: 6127 on 8876 Progress: 6128 on 8876 Progress: 6129 on 8876 Progress: 6130 on 8876 Progress: 6131 on 8876 Progress: 6132 on 8876 Progress: 6133 on 8876 Progress: 6134 on 8876 Progress: 6135 on 8876 Progress: 6136 on 8876 Progress: 6137 on 8876 Progress: 6138 on 8876 Progress: 6139 on 8876 Progress: 6140 on 8876 Progress: 6141 on 8876 Progress: 6142 on 8876 Progress: 6143 on 8876 Progress: 6144 on 8876 Progress: 6145 on 8876 Progress: 6146 on 8876 Progress: 6147 on 8876 Progress: 6148 on 8876 Progress: 6149 on 8876 Progress: 6150 on 8876 Progress: 6151 on 8876 Progress: 6152 on 8876 Progress: 6153 on 8876 Progress: 6154 on 8876 Progress: 6155 on 8876 Progress: 6156 on 8876 Progress: 6157 on 8876 Progress: 6158 on 8876 Progress: 6159 on 8876 Progress: 6160 on 8876 Progress: 6161 on 8876 Progress: 6162 on 8876 Progress: 6163 on 8876 Progress: 6164 on 8876 Progress: 6165 on 8876 Progress: 6166 on 8876 Progress: 6167 on 8876 Progress: 6168 on 8876 Progress: 6169 on 8876 Progress: 6170 on 8876 Progress: 6171 on 8876 Progress: 6172 on 8876 Progress: 6173 on 8876 Progress: 6174 on 8876 Progress: 6175 on 8876 Progress: 6176 on 8876 Progress: 6177 on 8876 Progress: 6178 on 8876 Progress: 6179 on 8876 Progress: 6180 on 8876 Progress: 6181 on 8876 Progress: 6182 on 8876 Progress: 6183 on 8876 Progress: 6184 on 8876 Progress: 6185 on 8876 Progress: 6186 on 8876 Progress: 6187 on 8876 Progress: 6188 on 8876 Progress: 6189 on 8876 Progress: 6190 on 8876 Progress: 6191 on 8876 Progress: 6192 on 8876 Progress: 6193 on 8876 Progress: 6194 on 8876 Progress: 6195 on 8876 Progress: 6196 on 8876 Progress: 6197 on 8876 Progress: 6198 on 8876 Progress: 6199 on 8876 Progress: 6200 on 8876 Progress: 6201 on 8876 Progress: 6202 on 8876 Progress: 6203 on 8876 Progress: 6204 on 8876 Progress: 6205 on 8876 Progress: 6206 on 8876 Progress: 6207 on 8876 Progress: 6208 on 8876 Progress: 6209 on 8876 Progress: 6210 on 8876 Progress: 6211 on 8876 Progress: 6212 on 8876 Progress: 6213 on 8876 Progress: 6214 on 8876 Progress: 6215 on 8876 Progress: 6216 on 8876 Progress: 6217 on 8876 Progress: 6218 on 8876 Progress: 6219 on 8876 Progress: 6220 on 8876 Progress: 6221 on 8876 Progress: 6222 on 8876 Progress: 6223 on 8876 Progress: 6224 on 8876 Progress: 6225 on 8876 Progress: 6226 on 8876 Progress: 6227 on 8876 Progress: 6228 on 8876 Progress: 6229 on 8876 Progress: 6230 on 8876 Progress: 6231 on 8876 Progress: 6232 on 8876 Progress: 6233 on 8876 Progress: 6234 on 8876 Progress: 6235 on 8876 Progress: 6236 on 8876 Progress: 6237 on 8876 Progress: 6238 on 8876 Progress: 6239 on 8876 Progress: 6240 on 8876 Progress: 6241 on 8876 Progress: 6242 on 8876 Progress: 6243 on 8876 Progress: 6244 on 8876 Progress: 6245 on 8876 Progress: 6246 on 8876 Progress: 6247 on 8876 Progress: 6248 on 8876 Progress: 6249 on 8876 Progress: 6250 on 8876 Progress: 6251 on 8876 Progress: 6252 on 8876 Progress: 6253 on 8876 Progress: 6254 on 8876 Progress: 6255 on 8876 Progress: 6256 on 8876 Progress: 6257 on 8876 Progress: 6258 on 8876 Progress: 6259 on 8876 Progress: 6260 on 8876 Progress: 6261 on 8876 Progress: 6262 on 8876 Progress: 6263 on 8876 Progress: 6264 on 8876 Progress: 6265 on 8876 Progress: 6266 on 8876 Progress: 6267 on 8876 Progress: 6268 on 8876 Progress: 6269 on 8876 Progress: 6270 on 8876 Progress: 6271 on 8876 Progress: 6272 on 8876 Progress: 6273 on 8876 Progress: 6274 on 8876 Progress: 6275 on 8876 Progress: 6276 on 8876 Progress: 6277 on 8876 Progress: 6278 on 8876 Progress: 6279 on 8876 Progress: 6280 on 8876 Progress: 6281 on 8876 Progress: 6282 on 8876 Progress: 6283 on 8876 Progress: 6284 on 8876 Progress: 6285 on 8876 Progress: 6286 on 8876 Progress: 6287 on 8876 Progress: 6288 on 8876 Progress: 6289 on 8876 Progress: 6290 on 8876 Progress: 6291 on 8876 Progress: 6292 on 8876 Progress: 6293 on 8876 Progress: 6294 on 8876 Progress: 6295 on 8876 Progress: 6296 on 8876 Progress: 6297 on 8876 Progress: 6298 on 8876 Progress: 6299 on 8876 Progress: 6300 on 8876 Progress: 6301 on 8876 Progress: 6302 on 8876 Progress: 6303 on 8876 Progress: 6304 on 8876 Progress: 6305 on 8876 Progress: 6306 on 8876 Progress: 6307 on 8876 Progress: 6308 on 8876 Progress: 6309 on 8876 Progress: 6310 on 8876 Progress: 6311 on 8876 Progress: 6312 on 8876 Progress: 6313 on 8876 Progress: 6314 on 8876 Progress: 6315 on 8876 Progress: 6316 on 8876 Progress: 6317 on 8876 Progress: 6318 on 8876 Progress: 6319 on 8876 Progress: 6320 on 8876 Progress: 6321 on 8876 Progress: 6322 on 8876 Progress: 6323 on 8876 Progress: 6324 on 8876 Progress: 6325 on 8876 Progress: 6326 on 8876 Progress: 6327 on 8876 Progress: 6328 on 8876 Progress: 6329 on 8876 Progress: 6330 on 8876 Progress: 6331 on 8876 Progress: 6332 on 8876 Progress: 6333 on 8876 Progress: 6334 on 8876 Progress: 6335 on 8876 Progress: 6336 on 8876 Progress: 6337 on 8876 Progress: 6338 on 8876 Progress: 6339 on 8876 Progress: 6340 on 8876 Progress: 6341 on 8876 Progress: 6342 on 8876 Progress: 6343 on 8876 Progress: 6344 on 8876 Progress: 6345 on 8876 Progress: 6346 on 8876 Progress: 6347 on 8876 Progress: 6348 on 8876 Progress: 6349 on 8876 Progress: 6350 on 8876 Progress: 6351 on 8876 Progress: 6352 on 8876 Progress: 6353 on 8876 Progress: 6354 on 8876 Progress: 6355 on 8876 Progress: 6356 on 8876 Progress: 6357 on 8876 Progress: 6358 on 8876 Progress: 6359 on 8876 Progress: 6360 on 8876 Progress: 6361 on 8876 Progress: 6362 on 8876 Progress: 6363 on 8876 Progress: 6364 on 8876 Progress: 6365 on 8876 Progress: 6366 on 8876 Progress: 6367 on 8876 Progress: 6368 on 8876 Progress: 6369 on 8876 Progress: 6370 on 8876 Progress: 6371 on 8876 Progress: 6372 on 8876 Progress: 6373 on 8876 Progress: 6374 on 8876 Progress: 6375 on 8876 Progress: 6376 on 8876 Progress: 6377 on 8876 Progress: 6378 on 8876 Progress: 6379 on 8876 Progress: 6380 on 8876 Progress: 6381 on 8876 Progress: 6382 on 8876 Progress: 6383 on 8876 Progress: 6384 on 8876 Progress: 6385 on 8876 Progress: 6386 on 8876 Progress: 6387 on 8876 Progress: 6388 on 8876 Progress: 6389 on 8876 Progress: 6390 on 8876 Progress: 6391 on 8876 Progress: 6392 on 8876 Progress: 6393 on 8876 Progress: 6394 on 8876 Progress: 6395 on 8876 Progress: 6396 on 8876 Progress: 6397 on 8876 Progress: 6398 on 8876 Progress: 6399 on 8876 Progress: 6400 on 8876 Progress: 6401 on 8876 Progress: 6402 on 8876 Progress: 6403 on 8876 Progress: 6404 on 8876 Progress: 6405 on 8876 Progress: 6406 on 8876 Progress: 6407 on 8876 Progress: 6408 on 8876 Progress: 6409 on 8876 Progress: 6410 on 8876 Progress: 6411 on 8876 Progress: 6412 on 8876 Progress: 6413 on 8876 Progress: 6414 on 8876 Progress: 6415 on 8876 Progress: 6416 on 8876 Progress: 6417 on 8876 Progress: 6418 on 8876 Progress: 6419 on 8876 Progress: 6420 on 8876 Progress: 6421 on 8876 Progress: 6422 on 8876 Progress: 6423 on 8876 Progress: 6424 on 8876 Progress: 6425 on 8876 Progress: 6426 on 8876 Progress: 6427 on 8876 Progress: 6428 on 8876 Progress: 6429 on 8876 Progress: 6430 on 8876 Progress: 6431 on 8876 Progress: 6432 on 8876 Progress: 6433 on 8876 Progress: 6434 on 8876 Progress: 6435 on 8876 Progress: 6436 on 8876 Progress: 6437 on 8876 Progress: 6438 on 8876 Progress: 6439 on 8876 Progress: 6440 on 8876 Progress: 6441 on 8876 Progress: 6442 on 8876 Progress: 6443 on 8876 Progress: 6444 on 8876 Progress: 6445 on 8876 Progress: 6446 on 8876 Progress: 6447 on 8876 Progress: 6448 on 8876 Progress: 6449 on 8876 Progress: 6450 on 8876 Progress: 6451 on 8876 Progress: 6452 on 8876 Progress: 6453 on 8876 Progress: 6454 on 8876 Progress: 6455 on 8876 Progress: 6456 on 8876 Progress: 6457 on 8876 Progress: 6458 on 8876 Progress: 6459 on 8876 Progress: 6460 on 8876 Progress: 6461 on 8876 Progress: 6462 on 8876 Progress: 6463 on 8876 Progress: 6464 on 8876 Progress: 6465 on 8876 Progress: 6466 on 8876 Progress: 6467 on 8876 Progress: 6468 on 8876 Progress: 6469 on 8876 Progress: 6470 on 8876 Progress: 6471 on 8876 Progress: 6472 on 8876 Progress: 6473 on 8876 Progress: 6474 on 8876 Progress: 6475 on 8876 Progress: 6476 on 8876 Progress: 6477 on 8876 Progress: 6478 on 8876 Progress: 6479 on 8876 Progress: 6480 on 8876 Progress: 6481 on 8876 Progress: 6482 on 8876 Progress: 6483 on 8876 Progress: 6484 on 8876 Progress: 6485 on 8876 Progress: 6486 on 8876 Progress: 6487 on 8876 Progress: 6488 on 8876 Progress: 6489 on 8876 Progress: 6490 on 8876 Progress: 6491 on 8876 Progress: 6492 on 8876 Progress: 6493 on 8876 Progress: 6494 on 8876 Progress: 6495 on 8876 Progress: 6496 on 8876 Progress: 6497 on 8876 Progress: 6498 on 8876 Progress: 6499 on 8876 Progress: 6500 on 8876 Progress: 6501 on 8876 Progress: 6502 on 8876 Progress: 6503 on 8876 Progress: 6504 on 8876 Progress: 6505 on 8876 Progress: 6506 on 8876 Progress: 6507 on 8876 Progress: 6508 on 8876 Progress: 6509 on 8876 Progress: 6510 on 8876 Progress: 6511 on 8876 Progress: 6512 on 8876 Progress: 6513 on 8876 Progress: 6514 on 8876 Progress: 6515 on 8876 Progress: 6516 on 8876 Progress: 6517 on 8876 Progress: 6518 on 8876 Progress: 6519 on 8876 Progress: 6520 on 8876 Progress: 6521 on 8876 Progress: 6522 on 8876 Progress: 6523 on 8876 Progress: 6524 on 8876 Progress: 6525 on 8876 Progress: 6526 on 8876 Progress: 6527 on 8876 Progress: 6528 on 8876 Progress: 6529 on 8876 Progress: 6530 on 8876 Progress: 6531 on 8876 Progress: 6532 on 8876 Progress: 6533 on 8876 Progress: 6534 on 8876 Progress: 6535 on 8876 Progress: 6536 on 8876 Progress: 6537 on 8876 Progress: 6538 on 8876 Progress: 6539 on 8876 Progress: 6540 on 8876 Progress: 6541 on 8876 Progress: 6542 on 8876 Progress: 6543 on 8876 Progress: 6544 on 8876 Progress: 6545 on 8876 Progress: 6546 on 8876 Progress: 6547 on 8876 Progress: 6548 on 8876 Progress: 6549 on 8876 Progress: 6550 on 8876 Progress: 6551 on 8876 Progress: 6552 on 8876 Progress: 6553 on 8876 Progress: 6554 on 8876 Progress: 6555 on 8876 Progress: 6556 on 8876 Progress: 6557 on 8876 Progress: 6558 on 8876 Progress: 6559 on 8876 Progress: 6560 on 8876 Progress: 6561 on 8876 Progress: 6562 on 8876 Progress: 6563 on 8876 Progress: 6564 on 8876 Progress: 6565 on 8876 Progress: 6566 on 8876 Progress: 6567 on 8876 Progress: 6568 on 8876 Progress: 6569 on 8876 Progress: 6570 on 8876 Progress: 6571 on 8876 Progress: 6572 on 8876 Progress: 6573 on 8876 Progress: 6574 on 8876 Progress: 6575 on 8876 Progress: 6576 on 8876 Progress: 6577 on 8876 Progress: 6578 on 8876 Progress: 6579 on 8876 Progress: 6580 on 8876 Progress: 6581 on 8876 Progress: 6582 on 8876 Progress: 6583 on 8876 Progress: 6584 on 8876 Progress: 6585 on 8876 Progress: 6586 on 8876 Progress: 6587 on 8876 Progress: 6588 on 8876 Progress: 6589 on 8876 Progress: 6590 on 8876 Progress: 6591 on 8876 Progress: 6592 on 8876 Progress: 6593 on 8876 Progress: 6594 on 8876 Progress: 6595 on 8876 Progress: 6596 on 8876 Progress: 6597 on 8876 Progress: 6598 on 8876 Progress: 6599 on 8876 Progress: 6600 on 8876 Progress: 6601 on 8876 Progress: 6602 on 8876 Progress: 6603 on 8876 Progress: 6604 on 8876 Progress: 6605 on 8876 Progress: 6606 on 8876 Progress: 6607 on 8876 Progress: 6608 on 8876 Progress: 6609 on 8876 Progress: 6610 on 8876 Progress: 6611 on 8876 Progress: 6612 on 8876 Progress: 6613 on 8876 Progress: 6614 on 8876 Progress: 6615 on 8876 Progress: 6616 on 8876 Progress: 6617 on 8876 Progress: 6618 on 8876 Progress: 6619 on 8876 Progress: 6620 on 8876 Progress: 6621 on 8876 Progress: 6622 on 8876 Progress: 6623 on 8876 Progress: 6624 on 8876 Progress: 6625 on 8876 Progress: 6626 on 8876 Progress: 6627 on 8876 Progress: 6628 on 8876 Progress: 6629 on 8876 Progress: 6630 on 8876 Progress: 6631 on 8876 Progress: 6632 on 8876 Progress: 6633 on 8876 Progress: 6634 on 8876 Progress: 6635 on 8876 Progress: 6636 on 8876 Progress: 6637 on 8876 Progress: 6638 on 8876 Progress: 6639 on 8876 Progress: 6640 on 8876 Progress: 6641 on 8876 Progress: 6642 on 8876 Progress: 6643 on 8876 Progress: 6644 on 8876 Progress: 6645 on 8876 Progress: 6646 on 8876 Progress: 6647 on 8876 Progress: 6648 on 8876 Progress: 6649 on 8876 Progress: 6650 on 8876 Progress: 6651 on 8876 Progress: 6652 on 8876 Progress: 6653 on 8876 Progress: 6654 on 8876 Progress: 6655 on 8876 Progress: 6656 on 8876 Progress: 6657 on 8876 Progress: 6658 on 8876 Progress: 6659 on 8876 Progress: 6660 on 8876 Progress: 6661 on 8876 Progress: 6662 on 8876 Progress: 6663 on 8876 Progress: 6664 on 8876 Progress: 6665 on 8876 Progress: 6666 on 8876 Progress: 6667 on 8876 Progress: 6668 on 8876 Progress: 6669 on 8876 Progress: 6670 on 8876 Progress: 6671 on 8876 Progress: 6672 on 8876 Progress: 6673 on 8876 Progress: 6674 on 8876 Progress: 6675 on 8876 Progress: 6676 on 8876 Progress: 6677 on 8876 Progress: 6678 on 8876 Progress: 6679 on 8876 Progress: 6680 on 8876 Progress: 6681 on 8876 Progress: 6682 on 8876 Progress: 6683 on 8876 Progress: 6684 on 8876 Progress: 6685 on 8876 Progress: 6686 on 8876 Progress: 6687 on 8876 Progress: 6688 on 8876 Progress: 6689 on 8876 Progress: 6690 on 8876 Progress: 6691 on 8876 Progress: 6692 on 8876 Progress: 6693 on 8876 Progress: 6694 on 8876 Progress: 6695 on 8876 Progress: 6696 on 8876 Progress: 6697 on 8876 Progress: 6698 on 8876 Progress: 6699 on 8876 Progress: 6700 on 8876 Progress: 6701 on 8876 Progress: 6702 on 8876 Progress: 6703 on 8876 Progress: 6704 on 8876 Progress: 6705 on 8876 Progress: 6706 on 8876 Progress: 6707 on 8876 Progress: 6708 on 8876 Progress: 6709 on 8876 Progress: 6710 on 8876 Progress: 6711 on 8876 Progress: 6712 on 8876 Progress: 6713 on 8876 Progress: 6714 on 8876 Progress: 6715 on 8876 Progress: 6716 on 8876 Progress: 6717 on 8876 Progress: 6718 on 8876 Progress: 6719 on 8876 Progress: 6720 on 8876 Progress: 6721 on 8876 Progress: 6722 on 8876 Progress: 6723 on 8876 Progress: 6724 on 8876 Progress: 6725 on 8876 Progress: 6726 on 8876 Progress: 6727 on 8876 Progress: 6728 on 8876 Progress: 6729 on 8876 Progress: 6730 on 8876 Progress: 6731 on 8876 Progress: 6732 on 8876 Progress: 6733 on 8876 Progress: 6734 on 8876 Progress: 6735 on 8876 Progress: 6736 on 8876 Progress: 6737 on 8876 Progress: 6738 on 8876 Progress: 6739 on 8876 Progress: 6740 on 8876 Progress: 6741 on 8876 Progress: 6742 on 8876 Progress: 6743 on 8876 Progress: 6744 on 8876 Progress: 6745 on 8876 Progress: 6746 on 8876 Progress: 6747 on 8876 Progress: 6748 on 8876 Progress: 6749 on 8876 Progress: 6750 on 8876 Progress: 6751 on 8876 Progress: 6752 on 8876 Progress: 6753 on 8876 Progress: 6754 on 8876 Progress: 6755 on 8876 Progress: 6756 on 8876 Progress: 6757 on 8876 Progress: 6758 on 8876 Progress: 6759 on 8876 Progress: 6760 on 8876 Progress: 6761 on 8876 Progress: 6762 on 8876 Progress: 6763 on 8876 Progress: 6764 on 8876 Progress: 6765 on 8876 Progress: 6766 on 8876 Progress: 6767 on 8876 Progress: 6768 on 8876 Progress: 6769 on 8876 Progress: 6770 on 8876 Progress: 6771 on 8876 Progress: 6772 on 8876 Progress: 6773 on 8876 Progress: 6774 on 8876 Progress: 6775 on 8876 Progress: 6776 on 8876 Progress: 6777 on 8876 Progress: 6778 on 8876 Progress: 6779 on 8876 Progress: 6780 on 8876 Progress: 6781 on 8876 Progress: 6782 on 8876 Progress: 6783 on 8876 Progress: 6784 on 8876 Progress: 6785 on 8876 Progress: 6786 on 8876 Progress: 6787 on 8876 Progress: 6788 on 8876 Progress: 6789 on 8876 Progress: 6790 on 8876 Progress: 6791 on 8876 Progress: 6792 on 8876 Progress: 6793 on 8876 Progress: 6794 on 8876 Progress: 6795 on 8876 Progress: 6796 on 8876 Progress: 6797 on 8876 Progress: 6798 on 8876 Progress: 6799 on 8876 Progress: 6800 on 8876 Progress: 6801 on 8876 Progress: 6802 on 8876 Progress: 6803 on 8876 Progress: 6804 on 8876 Progress: 6805 on 8876 Progress: 6806 on 8876 Progress: 6807 on 8876 Progress: 6808 on 8876 Progress: 6809 on 8876 Progress: 6810 on 8876 Progress: 6811 on 8876 Progress: 6812 on 8876 Progress: 6813 on 8876 Progress: 6814 on 8876 Progress: 6815 on 8876 Progress: 6816 on 8876 Progress: 6817 on 8876 Progress: 6818 on 8876 Progress: 6819 on 8876 Progress: 6820 on 8876 Progress: 6821 on 8876 Progress: 6822 on 8876 Progress: 6823 on 8876 Progress: 6824 on 8876 Progress: 6825 on 8876 Progress: 6826 on 8876 Progress: 6827 on 8876 Progress: 6828 on 8876 Progress: 6829 on 8876 Progress: 6830 on 8876 Progress: 6831 on 8876 Progress: 6832 on 8876 Progress: 6833 on 8876 Progress: 6834 on 8876 Progress: 6835 on 8876 Progress: 6836 on 8876 Progress: 6837 on 8876 Progress: 6838 on 8876 Progress: 6839 on 8876 Progress: 6840 on 8876 Progress: 6841 on 8876 Progress: 6842 on 8876 Progress: 6843 on 8876 Progress: 6844 on 8876 Progress: 6845 on 8876 Progress: 6846 on 8876 Progress: 6847 on 8876 Progress: 6848 on 8876 Progress: 6849 on 8876 Progress: 6850 on 8876 Progress: 6851 on 8876 Progress: 6852 on 8876 Progress: 6853 on 8876 Progress: 6854 on 8876 Progress: 6855 on 8876 Progress: 6856 on 8876 Progress: 6857 on 8876 Progress: 6858 on 8876 Progress: 6859 on 8876 Progress: 6860 on 8876 Progress: 6861 on 8876 Progress: 6862 on 8876 Progress: 6863 on 8876 Progress: 6864 on 8876 Progress: 6865 on 8876 Progress: 6866 on 8876 Progress: 6867 on 8876 Progress: 6868 on 8876 Progress: 6869 on 8876 Progress: 6870 on 8876 Progress: 6871 on 8876 Progress: 6872 on 8876 Progress: 6873 on 8876 Progress: 6874 on 8876 Progress: 6875 on 8876 Progress: 6876 on 8876 Progress: 6877 on 8876 Progress: 6878 on 8876 Progress: 6879 on 8876 Progress: 6880 on 8876 Progress: 6881 on 8876 Progress: 6882 on 8876 Progress: 6883 on 8876 Progress: 6884 on 8876 Progress: 6885 on 8876 Progress: 6886 on 8876 Progress: 6887 on 8876 Progress: 6888 on 8876 Progress: 6889 on 8876 Progress: 6890 on 8876 Progress: 6891 on 8876 Progress: 6892 on 8876 Progress: 6893 on 8876 Progress: 6894 on 8876 Progress: 6895 on 8876 Progress: 6896 on 8876 Progress: 6897 on 8876 Progress: 6898 on 8876 Progress: 6899 on 8876 Progress: 6900 on 8876 Progress: 6901 on 8876 Progress: 6902 on 8876 Progress: 6903 on 8876 Progress: 6904 on 8876 Progress: 6905 on 8876 Progress: 6906 on 8876 Progress: 6907 on 8876 Progress: 6908 on 8876 Progress: 6909 on 8876 Progress: 6910 on 8876 Progress: 6911 on 8876 Progress: 6912 on 8876 Progress: 6913 on 8876 Progress: 6914 on 8876 Progress: 6915 on 8876 Progress: 6916 on 8876 Progress: 6917 on 8876 Progress: 6918 on 8876 Progress: 6919 on 8876 Progress: 6920 on 8876 Progress: 6921 on 8876 Progress: 6922 on 8876 Progress: 6923 on 8876 Progress: 6924 on 8876 Progress: 6925 on 8876 Progress: 6926 on 8876 Progress: 6927 on 8876 Progress: 6928 on 8876 Progress: 6929 on 8876 Progress: 6930 on 8876 Progress: 6931 on 8876 Progress: 6932 on 8876 Progress: 6933 on 8876 Progress: 6934 on 8876 Progress: 6935 on 8876 Progress: 6936 on 8876 Progress: 6937 on 8876 Progress: 6938 on 8876 Progress: 6939 on 8876 Progress: 6940 on 8876 Progress: 6941 on 8876 Progress: 6942 on 8876 Progress: 6943 on 8876 Progress: 6944 on 8876 Progress: 6945 on 8876 Progress: 6946 on 8876 Progress: 6947 on 8876 Progress: 6948 on 8876 Progress: 6949 on 8876 Progress: 6950 on 8876 Progress: 6951 on 8876 Progress: 6952 on 8876 Progress: 6953 on 8876 Progress: 6954 on 8876 Progress: 6955 on 8876 Progress: 6956 on 8876 Progress: 6957 on 8876 Progress: 6958 on 8876 Progress: 6959 on 8876 Progress: 6960 on 8876 Progress: 6961 on 8876 Progress: 6962 on 8876 Progress: 6963 on 8876 Progress: 6964 on 8876 Progress: 6965 on 8876 Progress: 6966 on 8876 Progress: 6967 on 8876 Progress: 6968 on 8876 Progress: 6969 on 8876 Progress: 6970 on 8876 Progress: 6971 on 8876 Progress: 6972 on 8876 Progress: 6973 on 8876 Progress: 6974 on 8876 Progress: 6975 on 8876 Progress: 6976 on 8876 Progress: 6977 on 8876 Progress: 6978 on 8876 Progress: 6979 on 8876 Progress: 6980 on 8876 Progress: 6981 on 8876 Progress: 6982 on 8876 Progress: 6983 on 8876 Progress: 6984 on 8876 Progress: 6985 on 8876 Progress: 6986 on 8876 Progress: 6987 on 8876 Progress: 6988 on 8876 Progress: 6989 on 8876 Progress: 6990 on 8876 Progress: 6991 on 8876 Progress: 6992 on 8876 Progress: 6993 on 8876 Progress: 6994 on 8876 Progress: 6995 on 8876 Progress: 6996 on 8876 Progress: 6997 on 8876 Progress: 6998 on 8876 Progress: 6999 on 8876 Progress: 7000 on 8876 Progress: 7001 on 8876 Progress: 7002 on 8876 Progress: 7003 on 8876 Progress: 7004 on 8876 Progress: 7005 on 8876 Progress: 7006 on 8876 Progress: 7007 on 8876 Progress: 7008 on 8876 Progress: 7009 on 8876 Progress: 7010 on 8876 Progress: 7011 on 8876 Progress: 7012 on 8876 Progress: 7013 on 8876 Progress: 7014 on 8876 Progress: 7015 on 8876 Progress: 7016 on 8876 Progress: 7017 on 8876 Progress: 7018 on 8876 Progress: 7019 on 8876 Progress: 7020 on 8876 Progress: 7021 on 8876 Progress: 7022 on 8876 Progress: 7023 on 8876 Progress: 7024 on 8876 Progress: 7025 on 8876 Progress: 7026 on 8876 Progress: 7027 on 8876 Progress: 7028 on 8876 Progress: 7029 on 8876 Progress: 7030 on 8876 Progress: 7031 on 8876 Progress: 7032 on 8876 Progress: 7033 on 8876 Progress: 7034 on 8876 Progress: 7035 on 8876 Progress: 7036 on 8876 Progress: 7037 on 8876 Progress: 7038 on 8876 Progress: 7039 on 8876 Progress: 7040 on 8876 Progress: 7041 on 8876 Progress: 7042 on 8876 Progress: 7043 on 8876 Progress: 7044 on 8876 Progress: 7045 on 8876 Progress: 7046 on 8876 Progress: 7047 on 8876 Progress: 7048 on 8876 Progress: 7049 on 8876 Progress: 7050 on 8876 Progress: 7051 on 8876 Progress: 7052 on 8876 Progress: 7053 on 8876 Progress: 7054 on 8876 Progress: 7055 on 8876 Progress: 7056 on 8876 Progress: 7057 on 8876 Progress: 7058 on 8876 Progress: 7059 on 8876 Progress: 7060 on 8876 Progress: 7061 on 8876 Progress: 7062 on 8876 Progress: 7063 on 8876 Progress: 7064 on 8876 Progress: 7065 on 8876 Progress: 7066 on 8876 Progress: 7067 on 8876 Progress: 7068 on 8876 Progress: 7069 on 8876 Progress: 7070 on 8876 Progress: 7071 on 8876 Progress: 7072 on 8876 Progress: 7073 on 8876 Progress: 7074 on 8876 Progress: 7075 on 8876 Progress: 7076 on 8876 Progress: 7077 on 8876 Progress: 7078 on 8876 Progress: 7079 on 8876 Progress: 7080 on 8876 Progress: 7081 on 8876 Progress: 7082 on 8876 Progress: 7083 on 8876 Progress: 7084 on 8876 Progress: 7085 on 8876 Progress: 7086 on 8876 Progress: 7087 on 8876 Progress: 7088 on 8876 Progress: 7089 on 8876 Progress: 7090 on 8876 Progress: 7091 on 8876 Progress: 7092 on 8876 Progress: 7093 on 8876 Progress: 7094 on 8876 Progress: 7095 on 8876 Progress: 7096 on 8876 Progress: 7097 on 8876 Progress: 7098 on 8876 Progress: 7099 on 8876 Progress: 7100 on 8876 Progress: 7101 on 8876 Progress: 7102 on 8876 Progress: 7103 on 8876 Progress: 7104 on 8876 Progress: 7105 on 8876 Progress: 7106 on 8876 Progress: 7107 on 8876 Progress: 7108 on 8876 Progress: 7109 on 8876 Progress: 7110 on 8876 Progress: 7111 on 8876 Progress: 7112 on 8876 Progress: 7113 on 8876 Progress: 7114 on 8876 Progress: 7115 on 8876 Progress: 7116 on 8876 Progress: 7117 on 8876 Progress: 7118 on 8876 Progress: 7119 on 8876 Progress: 7120 on 8876 Progress: 7121 on 8876 Progress: 7122 on 8876 Progress: 7123 on 8876 Progress: 7124 on 8876 Progress: 7125 on 8876 Progress: 7126 on 8876 Progress: 7127 on 8876 Progress: 7128 on 8876 Progress: 7129 on 8876 Progress: 7130 on 8876 Progress: 7131 on 8876 Progress: 7132 on 8876 Progress: 7133 on 8876 Progress: 7134 on 8876 Progress: 7135 on 8876 Progress: 7136 on 8876 Progress: 7137 on 8876 Progress: 7138 on 8876 Progress: 7139 on 8876 Progress: 7140 on 8876 Progress: 7141 on 8876 Progress: 7142 on 8876 Progress: 7143 on 8876 Progress: 7144 on 8876 Progress: 7145 on 8876 Progress: 7146 on 8876 Progress: 7147 on 8876 Progress: 7148 on 8876 Progress: 7149 on 8876 Progress: 7150 on 8876 Progress: 7151 on 8876 Progress: 7152 on 8876 Progress: 7153 on 8876 Progress: 7154 on 8876 Progress: 7155 on 8876 Progress: 7156 on 8876 Progress: 7157 on 8876 Progress: 7158 on 8876 Progress: 7159 on 8876 Progress: 7160 on 8876 Progress: 7161 on 8876 Progress: 7162 on 8876 Progress: 7163 on 8876 Progress: 7164 on 8876 Progress: 7165 on 8876 Progress: 7166 on 8876 Progress: 7167 on 8876 Progress: 7168 on 8876 Progress: 7169 on 8876 Progress: 7170 on 8876 Progress: 7171 on 8876 Progress: 7172 on 8876 Progress: 7173 on 8876 Progress: 7174 on 8876 Progress: 7175 on 8876 Progress: 7176 on 8876 Progress: 7177 on 8876 Progress: 7178 on 8876 Progress: 7179 on 8876 Progress: 7180 on 8876 Progress: 7181 on 8876 Progress: 7182 on 8876 Progress: 7183 on 8876 Progress: 7184 on 8876 Progress: 7185 on 8876 Progress: 7186 on 8876 Progress: 7187 on 8876 Progress: 7188 on 8876 Progress: 7189 on 8876 Progress: 7190 on 8876 Progress: 7191 on 8876 Progress: 7192 on 8876 Progress: 7193 on 8876 Progress: 7194 on 8876 Progress: 7195 on 8876 Progress: 7196 on 8876 Progress: 7197 on 8876 Progress: 7198 on 8876 Progress: 7199 on 8876 Progress: 7200 on 8876 Progress: 7201 on 8876 Progress: 7202 on 8876 Progress: 7203 on 8876 Progress: 7204 on 8876 Progress: 7205 on 8876 Progress: 7206 on 8876 Progress: 7207 on 8876 Progress: 7208 on 8876 Progress: 7209 on 8876 Progress: 7210 on 8876 Progress: 7211 on 8876 Progress: 7212 on 8876 Progress: 7213 on 8876 Progress: 7214 on 8876 Progress: 7215 on 8876 Progress: 7216 on 8876 Progress: 7217 on 8876 Progress: 7218 on 8876 Progress: 7219 on 8876 Progress: 7220 on 8876 Progress: 7221 on 8876 Progress: 7222 on 8876 Progress: 7223 on 8876 Progress: 7224 on 8876 Progress: 7225 on 8876 Progress: 7226 on 8876 Progress: 7227 on 8876 Progress: 7228 on 8876 Progress: 7229 on 8876 Progress: 7230 on 8876 Progress: 7231 on 8876 Progress: 7232 on 8876 Progress: 7233 on 8876 Progress: 7234 on 8876 Progress: 7235 on 8876 Progress: 7236 on 8876 Progress: 7237 on 8876 Progress: 7238 on 8876 Progress: 7239 on 8876 Progress: 7240 on 8876 Progress: 7241 on 8876 Progress: 7242 on 8876 Progress: 7243 on 8876 Progress: 7244 on 8876 Progress: 7245 on 8876 Progress: 7246 on 8876 Progress: 7247 on 8876 Progress: 7248 on 8876 Progress: 7249 on 8876 Progress: 7250 on 8876 Progress: 7251 on 8876 Progress: 7252 on 8876 Progress: 7253 on 8876 Progress: 7254 on 8876 Progress: 7255 on 8876 Progress: 7256 on 8876 Progress: 7257 on 8876 Progress: 7258 on 8876 Progress: 7259 on 8876 Progress: 7260 on 8876 Progress: 7261 on 8876 Progress: 7262 on 8876 Progress: 7263 on 8876 Progress: 7264 on 8876 Progress: 7265 on 8876 Progress: 7266 on 8876 Progress: 7267 on 8876 Progress: 7268 on 8876 Progress: 7269 on 8876 Progress: 7270 on 8876 Progress: 7271 on 8876 Progress: 7272 on 8876 Progress: 7273 on 8876 Progress: 7274 on 8876 Progress: 7275 on 8876 Progress: 7276 on 8876 Progress: 7277 on 8876 Progress: 7278 on 8876 Progress: 7279 on 8876 Progress: 7280 on 8876 Progress: 7281 on 8876 Progress: 7282 on 8876 Progress: 7283 on 8876 Progress: 7284 on 8876 Progress: 7285 on 8876 Progress: 7286 on 8876 Progress: 7287 on 8876 Progress: 7288 on 8876 Progress: 7289 on 8876 Progress: 7290 on 8876 Progress: 7291 on 8876 Progress: 7292 on 8876 Progress: 7293 on 8876 Progress: 7294 on 8876 Progress: 7295 on 8876 Progress: 7296 on 8876 Progress: 7297 on 8876 Progress: 7298 on 8876 Progress: 7299 on 8876 Progress: 7300 on 8876 Progress: 7301 on 8876 Progress: 7302 on 8876 Progress: 7303 on 8876 Progress: 7304 on 8876 Progress: 7305 on 8876 Progress: 7306 on 8876 Progress: 7307 on 8876 Progress: 7308 on 8876 Progress: 7309 on 8876 Progress: 7310 on 8876 Progress: 7311 on 8876 Progress: 7312 on 8876 Progress: 7313 on 8876 Progress: 7314 on 8876 Progress: 7315 on 8876 Progress: 7316 on 8876 Progress: 7317 on 8876 Progress: 7318 on 8876 Progress: 7319 on 8876 Progress: 7320 on 8876 Progress: 7321 on 8876 Progress: 7322 on 8876 Progress: 7323 on 8876 Progress: 7324 on 8876 Progress: 7325 on 8876 Progress: 7326 on 8876 Progress: 7327 on 8876 Progress: 7328 on 8876 Progress: 7329 on 8876 Progress: 7330 on 8876 Progress: 7331 on 8876 Progress: 7332 on 8876 Progress: 7333 on 8876 Progress: 7334 on 8876 Progress: 7335 on 8876 Progress: 7336 on 8876 Progress: 7337 on 8876 Progress: 7338 on 8876 Progress: 7339 on 8876 Progress: 7340 on 8876 Progress: 7341 on 8876 Progress: 7342 on 8876 Progress: 7343 on 8876 Progress: 7344 on 8876 Progress: 7345 on 8876 Progress: 7346 on 8876 Progress: 7347 on 8876 Progress: 7348 on 8876 Progress: 7349 on 8876 Progress: 7350 on 8876 Progress: 7351 on 8876 Progress: 7352 on 8876 Progress: 7353 on 8876 Progress: 7354 on 8876 Progress: 7355 on 8876 Progress: 7356 on 8876 Progress: 7357 on 8876 Progress: 7358 on 8876 Progress: 7359 on 8876 Progress: 7360 on 8876 Progress: 7361 on 8876 Progress: 7362 on 8876 Progress: 7363 on 8876 Progress: 7364 on 8876 Progress: 7365 on 8876 Progress: 7366 on 8876 Progress: 7367 on 8876 Progress: 7368 on 8876 Progress: 7369 on 8876 Progress: 7370 on 8876 Progress: 7371 on 8876 Progress: 7372 on 8876 Progress: 7373 on 8876 Progress: 7374 on 8876 Progress: 7375 on 8876 Progress: 7376 on 8876 Progress: 7377 on 8876 Progress: 7378 on 8876 Progress: 7379 on 8876 Progress: 7380 on 8876 Progress: 7381 on 8876 Progress: 7382 on 8876 Progress: 7383 on 8876 Progress: 7384 on 8876 Progress: 7385 on 8876 Progress: 7386 on 8876 Progress: 7387 on 8876 Progress: 7388 on 8876 Progress: 7389 on 8876 Progress: 7390 on 8876 Progress: 7391 on 8876 Progress: 7392 on 8876 Progress: 7393 on 8876 Progress: 7394 on 8876 Progress: 7395 on 8876 Progress: 7396 on 8876 Progress: 7397 on 8876 Progress: 7398 on 8876 Progress: 7399 on 8876 Progress: 7400 on 8876 Progress: 7401 on 8876 Progress: 7402 on 8876 Progress: 7403 on 8876 Progress: 7404 on 8876 Progress: 7405 on 8876 Progress: 7406 on 8876 Progress: 7407 on 8876 Progress: 7408 on 8876 Progress: 7409 on 8876 Progress: 7410 on 8876 Progress: 7411 on 8876 Progress: 7412 on 8876 Progress: 7413 on 8876 Progress: 7414 on 8876 Progress: 7415 on 8876 Progress: 7416 on 8876 Progress: 7417 on 8876 Progress: 7418 on 8876 Progress: 7419 on 8876 Progress: 7420 on 8876 Progress: 7421 on 8876 Progress: 7422 on 8876 Progress: 7423 on 8876 Progress: 7424 on 8876 Progress: 7425 on 8876 Progress: 7426 on 8876 Progress: 7427 on 8876 Progress: 7428 on 8876 Progress: 7429 on 8876 Progress: 7430 on 8876 Progress: 7431 on 8876 Progress: 7432 on 8876 Progress: 7433 on 8876 Progress: 7434 on 8876 Progress: 7435 on 8876 Progress: 7436 on 8876 Progress: 7437 on 8876 Progress: 7438 on 8876 Progress: 7439 on 8876 Progress: 7440 on 8876 Progress: 7441 on 8876 Progress: 7442 on 8876 Progress: 7443 on 8876 Progress: 7444 on 8876 Progress: 7445 on 8876 Progress: 7446 on 8876 Progress: 7447 on 8876 Progress: 7448 on 8876 Progress: 7449 on 8876 Progress: 7450 on 8876 Progress: 7451 on 8876 Progress: 7452 on 8876 Progress: 7453 on 8876 Progress: 7454 on 8876 Progress: 7455 on 8876 Progress: 7456 on 8876 Progress: 7457 on 8876 Progress: 7458 on 8876 Progress: 7459 on 8876 Progress: 7460 on 8876 Progress: 7461 on 8876 Progress: 7462 on 8876 Progress: 7463 on 8876 Progress: 7464 on 8876 Progress: 7465 on 8876 Progress: 7466 on 8876 Progress: 7467 on 8876 Progress: 7468 on 8876 Progress: 7469 on 8876 Progress: 7470 on 8876 Progress: 7471 on 8876 Progress: 7472 on 8876 Progress: 7473 on 8876 Progress: 7474 on 8876 Progress: 7475 on 8876 Progress: 7476 on 8876 Progress: 7477 on 8876 Progress: 7478 on 8876 Progress: 7479 on 8876 Progress: 7480 on 8876 Progress: 7481 on 8876 Progress: 7482 on 8876 Progress: 7483 on 8876 Progress: 7484 on 8876 Progress: 7485 on 8876 Progress: 7486 on 8876 Progress: 7487 on 8876 Progress: 7488 on 8876 Progress: 7489 on 8876 Progress: 7490 on 8876 Progress: 7491 on 8876 Progress: 7492 on 8876 Progress: 7493 on 8876 Progress: 7494 on 8876 Progress: 7495 on 8876 Progress: 7496 on 8876 Progress: 7497 on 8876 Progress: 7498 on 8876 Progress: 7499 on 8876 Progress: 7500 on 8876 Progress: 7501 on 8876 Progress: 7502 on 8876 Progress: 7503 on 8876 Progress: 7504 on 8876 Progress: 7505 on 8876 Progress: 7506 on 8876 Progress: 7507 on 8876 Progress: 7508 on 8876 Progress: 7509 on 8876 Progress: 7510 on 8876 Progress: 7511 on 8876 Progress: 7512 on 8876 Progress: 7513 on 8876 Progress: 7514 on 8876 Progress: 7515 on 8876 Progress: 7516 on 8876 Progress: 7517 on 8876 Progress: 7518 on 8876 Progress: 7519 on 8876 Progress: 7520 on 8876 Progress: 7521 on 8876 Progress: 7522 on 8876 Progress: 7523 on 8876 Progress: 7524 on 8876 Progress: 7525 on 8876 Progress: 7526 on 8876 Progress: 7527 on 8876 Progress: 7528 on 8876 Progress: 7529 on 8876 Progress: 7530 on 8876 Progress: 7531 on 8876 Progress: 7532 on 8876 Progress: 7533 on 8876 Progress: 7534 on 8876 Progress: 7535 on 8876 Progress: 7536 on 8876 Progress: 7537 on 8876 Progress: 7538 on 8876 Progress: 7539 on 8876 Progress: 7540 on 8876 Progress: 7541 on 8876 Progress: 7542 on 8876 Progress: 7543 on 8876 Progress: 7544 on 8876 Progress: 7545 on 8876 Progress: 7546 on 8876 Progress: 7547 on 8876 Progress: 7548 on 8876 Progress: 7549 on 8876 Progress: 7550 on 8876 Progress: 7551 on 8876 Progress: 7552 on 8876 Progress: 7553 on 8876 Progress: 7554 on 8876 Progress: 7555 on 8876 Progress: 7556 on 8876 Progress: 7557 on 8876 Progress: 7558 on 8876 Progress: 7559 on 8876 Progress: 7560 on 8876 Progress: 7561 on 8876 Progress: 7562 on 8876 Progress: 7563 on 8876 Progress: 7564 on 8876 Progress: 7565 on 8876 Progress: 7566 on 8876 Progress: 7567 on 8876 Progress: 7568 on 8876 Progress: 7569 on 8876 Progress: 7570 on 8876 Progress: 7571 on 8876 Progress: 7572 on 8876 Progress: 7573 on 8876 Progress: 7574 on 8876 Progress: 7575 on 8876 Progress: 7576 on 8876 Progress: 7577 on 8876 Progress: 7578 on 8876 Progress: 7579 on 8876 Progress: 7580 on 8876 Progress: 7581 on 8876 Progress: 7582 on 8876 Progress: 7583 on 8876 Progress: 7584 on 8876 Progress: 7585 on 8876 Progress: 7586 on 8876 Progress: 7587 on 8876 Progress: 7588 on 8876 Progress: 7589 on 8876 Progress: 7590 on 8876 Progress: 7591 on 8876 Progress: 7592 on 8876 Progress: 7593 on 8876 Progress: 7594 on 8876 Progress: 7595 on 8876 Progress: 7596 on 8876 Progress: 7597 on 8876 Progress: 7598 on 8876 Progress: 7599 on 8876 Progress: 7600 on 8876 Progress: 7601 on 8876 Progress: 7602 on 8876 Progress: 7603 on 8876 Progress: 7604 on 8876 Progress: 7605 on 8876 Progress: 7606 on 8876 Progress: 7607 on 8876 Progress: 7608 on 8876 Progress: 7609 on 8876 Progress: 7610 on 8876 Progress: 7611 on 8876 Progress: 7612 on 8876 Progress: 7613 on 8876 Progress: 7614 on 8876 Progress: 7615 on 8876 Progress: 7616 on 8876 Progress: 7617 on 8876 Progress: 7618 on 8876 Progress: 7619 on 8876 Progress: 7620 on 8876 Progress: 7621 on 8876 Progress: 7622 on 8876 Progress: 7623 on 8876 Progress: 7624 on 8876 Progress: 7625 on 8876 Progress: 7626 on 8876 Progress: 7627 on 8876 Progress: 7628 on 8876 Progress: 7629 on 8876 Progress: 7630 on 8876 Progress: 7631 on 8876 Progress: 7632 on 8876 Progress: 7633 on 8876 Progress: 7634 on 8876 Progress: 7635 on 8876 Progress: 7636 on 8876 Progress: 7637 on 8876 Progress: 7638 on 8876 Progress: 7639 on 8876 Progress: 7640 on 8876 Progress: 7641 on 8876 Progress: 7642 on 8876 Progress: 7643 on 8876 Progress: 7644 on 8876 Progress: 7645 on 8876 Progress: 7646 on 8876 Progress: 7647 on 8876 Progress: 7648 on 8876 Progress: 7649 on 8876 Progress: 7650 on 8876 Progress: 7651 on 8876 Progress: 7652 on 8876 Progress: 7653 on 8876 Progress: 7654 on 8876 Progress: 7655 on 8876 Progress: 7656 on 8876 Progress: 7657 on 8876 Progress: 7658 on 8876 Progress: 7659 on 8876 Progress: 7660 on 8876 Progress: 7661 on 8876 Progress: 7662 on 8876 Progress: 7663 on 8876 Progress: 7664 on 8876 Progress: 7665 on 8876 Progress: 7666 on 8876 Progress: 7667 on 8876 Progress: 7668 on 8876 Progress: 7669 on 8876 Progress: 7670 on 8876 Progress: 7671 on 8876 Progress: 7672 on 8876 Progress: 7673 on 8876 Progress: 7674 on 8876 Progress: 7675 on 8876 Progress: 7676 on 8876 Progress: 7677 on 8876 Progress: 7678 on 8876 Progress: 7679 on 8876 Progress: 7680 on 8876 Progress: 7681 on 8876 Progress: 7682 on 8876 Progress: 7683 on 8876 Progress: 7684 on 8876 Progress: 7685 on 8876 Progress: 7686 on 8876 Progress: 7687 on 8876 Progress: 7688 on 8876 Progress: 7689 on 8876 Progress: 7690 on 8876 Progress: 7691 on 8876 Progress: 7692 on 8876 Progress: 7693 on 8876 Progress: 7694 on 8876 Progress: 7695 on 8876 Progress: 7696 on 8876 Progress: 7697 on 8876 Progress: 7698 on 8876 Progress: 7699 on 8876 Progress: 7700 on 8876 Progress: 7701 on 8876 Progress: 7702 on 8876 Progress: 7703 on 8876 Progress: 7704 on 8876 Progress: 7705 on 8876 Progress: 7706 on 8876 Progress: 7707 on 8876 Progress: 7708 on 8876 Progress: 7709 on 8876 Progress: 7710 on 8876 Progress: 7711 on 8876 Progress: 7712 on 8876 Progress: 7713 on 8876 Progress: 7714 on 8876 Progress: 7715 on 8876 Progress: 7716 on 8876 Progress: 7717 on 8876 Progress: 7718 on 8876 Progress: 7719 on 8876 Progress: 7720 on 8876 Progress: 7721 on 8876 Progress: 7722 on 8876 Progress: 7723 on 8876 Progress: 7724 on 8876 Progress: 7725 on 8876 Progress: 7726 on 8876 Progress: 7727 on 8876 Progress: 7728 on 8876 Progress: 7729 on 8876 Progress: 7730 on 8876 Progress: 7731 on 8876 Progress: 7732 on 8876 Progress: 7733 on 8876 Progress: 7734 on 8876 Progress: 7735 on 8876 Progress: 7736 on 8876 Progress: 7737 on 8876 Progress: 7738 on 8876 Progress: 7739 on 8876 Progress: 7740 on 8876 Progress: 7741 on 8876 Progress: 7742 on 8876 Progress: 7743 on 8876 Progress: 7744 on 8876 Progress: 7745 on 8876 Progress: 7746 on 8876 Progress: 7747 on 8876 Progress: 7748 on 8876 Progress: 7749 on 8876 Progress: 7750 on 8876 Progress: 7751 on 8876 Progress: 7752 on 8876 Progress: 7753 on 8876 Progress: 7754 on 8876 Progress: 7755 on 8876 Progress: 7756 on 8876 Progress: 7757 on 8876 Progress: 7758 on 8876 Progress: 7759 on 8876 Progress: 7760 on 8876 Progress: 7761 on 8876 Progress: 7762 on 8876 Progress: 7763 on 8876 Progress: 7764 on 8876 Progress: 7765 on 8876 Progress: 7766 on 8876 Progress: 7767 on 8876 Progress: 7768 on 8876 Progress: 7769 on 8876 Progress: 7770 on 8876 Progress: 7771 on 8876 Progress: 7772 on 8876 Progress: 7773 on 8876 Progress: 7774 on 8876 Progress: 7775 on 8876 Progress: 7776 on 8876 Progress: 7777 on 8876 Progress: 7778 on 8876 Progress: 7779 on 8876 Progress: 7780 on 8876 Progress: 7781 on 8876 Progress: 7782 on 8876 Progress: 7783 on 8876 Progress: 7784 on 8876 Progress: 7785 on 8876 Progress: 7786 on 8876 Progress: 7787 on 8876 Progress: 7788 on 8876 Progress: 7789 on 8876 Progress: 7790 on 8876 Progress: 7791 on 8876 Progress: 7792 on 8876 Progress: 7793 on 8876 Progress: 7794 on 8876 Progress: 7795 on 8876 Progress: 7796 on 8876 Progress: 7797 on 8876 Progress: 7798 on 8876 Progress: 7799 on 8876 Progress: 7800 on 8876 Progress: 7801 on 8876 Progress: 7802 on 8876 Progress: 7803 on 8876 Progress: 7804 on 8876 Progress: 7805 on 8876 Progress: 7806 on 8876 Progress: 7807 on 8876 Progress: 7808 on 8876 Progress: 7809 on 8876 Progress: 7810 on 8876 Progress: 7811 on 8876 Progress: 7812 on 8876 Progress: 7813 on 8876 Progress: 7814 on 8876 Progress: 7815 on 8876 Progress: 7816 on 8876 Progress: 7817 on 8876 Progress: 7818 on 8876 Progress: 7819 on 8876 Progress: 7820 on 8876 Progress: 7821 on 8876 Progress: 7822 on 8876 Progress: 7823 on 8876 Progress: 7824 on 8876 Progress: 7825 on 8876 Progress: 7826 on 8876 Progress: 7827 on 8876 Progress: 7828 on 8876 Progress: 7829 on 8876 Progress: 7830 on 8876 Progress: 7831 on 8876 Progress: 7832 on 8876 Progress: 7833 on 8876 Progress: 7834 on 8876 Progress: 7835 on 8876 Progress: 7836 on 8876 Progress: 7837 on 8876 Progress: 7838 on 8876 Progress: 7839 on 8876 Progress: 7840 on 8876 Progress: 7841 on 8876 Progress: 7842 on 8876 Progress: 7843 on 8876 Progress: 7844 on 8876 Progress: 7845 on 8876 Progress: 7846 on 8876 Progress: 7847 on 8876 Progress: 7848 on 8876 Progress: 7849 on 8876 Progress: 7850 on 8876 Progress: 7851 on 8876 Progress: 7852 on 8876 Progress: 7853 on 8876 Progress: 7854 on 8876 Progress: 7855 on 8876 Progress: 7856 on 8876 Progress: 7857 on 8876 Progress: 7858 on 8876 Progress: 7859 on 8876 Progress: 7860 on 8876 Progress: 7861 on 8876 Progress: 7862 on 8876 Progress: 7863 on 8876 Progress: 7864 on 8876 Progress: 7865 on 8876 Progress: 7866 on 8876 Progress: 7867 on 8876 Progress: 7868 on 8876 Progress: 7869 on 8876 Progress: 7870 on 8876 Progress: 7871 on 8876 Progress: 7872 on 8876 Progress: 7873 on 8876 Progress: 7874 on 8876 Progress: 7875 on 8876 Progress: 7876 on 8876 Progress: 7877 on 8876 Progress: 7878 on 8876 Progress: 7879 on 8876 Progress: 7880 on 8876 Progress: 7881 on 8876 Progress: 7882 on 8876 Progress: 7883 on 8876 Progress: 7884 on 8876 Progress: 7885 on 8876 Progress: 7886 on 8876 Progress: 7887 on 8876 Progress: 7888 on 8876 Progress: 7889 on 8876 Progress: 7890 on 8876 Progress: 7891 on 8876 Progress: 7892 on 8876 Progress: 7893 on 8876 Progress: 7894 on 8876 Progress: 7895 on 8876 Progress: 7896 on 8876 Progress: 7897 on 8876 Progress: 7898 on 8876 Progress: 7899 on 8876 Progress: 7900 on 8876 Progress: 7901 on 8876 Progress: 7902 on 8876 Progress: 7903 on 8876 Progress: 7904 on 8876 Progress: 7905 on 8876 Progress: 7906 on 8876 Progress: 7907 on 8876 Progress: 7908 on 8876 Progress: 7909 on 8876 Progress: 7910 on 8876 Progress: 7911 on 8876 Progress: 7912 on 8876 Progress: 7913 on 8876 Progress: 7914 on 8876 Progress: 7915 on 8876 Progress: 7916 on 8876 Progress: 7917 on 8876 Progress: 7918 on 8876 Progress: 7919 on 8876 Progress: 7920 on 8876 Progress: 7921 on 8876 Progress: 7922 on 8876 Progress: 7923 on 8876 Progress: 7924 on 8876 Progress: 7925 on 8876 Progress: 7926 on 8876 Progress: 7927 on 8876 Progress: 7928 on 8876 Progress: 7929 on 8876 Progress: 7930 on 8876 Progress: 7931 on 8876 Progress: 7932 on 8876 Progress: 7933 on 8876 Progress: 7934 on 8876 Progress: 7935 on 8876 Progress: 7936 on 8876 Progress: 7937 on 8876 Progress: 7938 on 8876 Progress: 7939 on 8876 Progress: 7940 on 8876 Progress: 7941 on 8876 Progress: 7942 on 8876 Progress: 7943 on 8876 Progress: 7944 on 8876 Progress: 7945 on 8876 Progress: 7946 on 8876 Progress: 7947 on 8876 Progress: 7948 on 8876 Progress: 7949 on 8876 Progress: 7950 on 8876 Progress: 7951 on 8876 Progress: 7952 on 8876 Progress: 7953 on 8876 Progress: 7954 on 8876 Progress: 7955 on 8876 Progress: 7956 on 8876 Progress: 7957 on 8876 Progress: 7958 on 8876 Progress: 7959 on 8876 Progress: 7960 on 8876 Progress: 7961 on 8876 Progress: 7962 on 8876 Progress: 7963 on 8876 Progress: 7964 on 8876 Progress: 7965 on 8876 Progress: 7966 on 8876 Progress: 7967 on 8876 Progress: 7968 on 8876 Progress: 7969 on 8876 Progress: 7970 on 8876 Progress: 7971 on 8876 Progress: 7972 on 8876 Progress: 7973 on 8876 Progress: 7974 on 8876 Progress: 7975 on 8876 Progress: 7976 on 8876 Progress: 7977 on 8876 Progress: 7978 on 8876 Progress: 7979 on 8876 Progress: 7980 on 8876 Progress: 7981 on 8876 Progress: 7982 on 8876 Progress: 7983 on 8876 Progress: 7984 on 8876 Progress: 7985 on 8876 Progress: 7986 on 8876 Progress: 7987 on 8876 Progress: 7988 on 8876 Progress: 7989 on 8876 Progress: 7990 on 8876 Progress: 7991 on 8876 Progress: 7992 on 8876 Progress: 7993 on 8876 Progress: 7994 on 8876 Progress: 7995 on 8876 Progress: 7996 on 8876 Progress: 7997 on 8876 Progress: 7998 on 8876 Progress: 7999 on 8876 Progress: 8000 on 8876 Progress: 8001 on 8876 Progress: 8002 on 8876 Progress: 8003 on 8876 Progress: 8004 on 8876 Progress: 8005 on 8876 Progress: 8006 on 8876 Progress: 8007 on 8876 Progress: 8008 on 8876 Progress: 8009 on 8876 Progress: 8010 on 8876 Progress: 8011 on 8876 Progress: 8012 on 8876 Progress: 8013 on 8876 Progress: 8014 on 8876 Progress: 8015 on 8876 Progress: 8016 on 8876 Progress: 8017 on 8876 Progress: 8018 on 8876 Progress: 8019 on 8876 Progress: 8020 on 8876 Progress: 8021 on 8876 Progress: 8022 on 8876 Progress: 8023 on 8876 Progress: 8024 on 8876 Progress: 8025 on 8876 Progress: 8026 on 8876 Progress: 8027 on 8876 Progress: 8028 on 8876 Progress: 8029 on 8876 Progress: 8030 on 8876 Progress: 8031 on 8876 Progress: 8032 on 8876 Progress: 8033 on 8876 Progress: 8034 on 8876 Progress: 8035 on 8876 Progress: 8036 on 8876 Progress: 8037 on 8876 Progress: 8038 on 8876 Progress: 8039 on 8876 Progress: 8040 on 8876 Progress: 8041 on 8876 Progress: 8042 on 8876 Progress: 8043 on 8876 Progress: 8044 on 8876 Progress: 8045 on 8876 Progress: 8046 on 8876 Progress: 8047 on 8876 Progress: 8048 on 8876 Progress: 8049 on 8876 Progress: 8050 on 8876 Progress: 8051 on 8876 Progress: 8052 on 8876 Progress: 8053 on 8876 Progress: 8054 on 8876 Progress: 8055 on 8876 Progress: 8056 on 8876 Progress: 8057 on 8876 Progress: 8058 on 8876 Progress: 8059 on 8876 Progress: 8060 on 8876 Progress: 8061 on 8876 Progress: 8062 on 8876 Progress: 8063 on 8876 Progress: 8064 on 8876 Progress: 8065 on 8876 Progress: 8066 on 8876 Progress: 8067 on 8876 Progress: 8068 on 8876 Progress: 8069 on 8876 Progress: 8070 on 8876 Progress: 8071 on 8876 Progress: 8072 on 8876 Progress: 8073 on 8876 Progress: 8074 on 8876 Progress: 8075 on 8876 Progress: 8076 on 8876 Progress: 8077 on 8876 Progress: 8078 on 8876 Progress: 8079 on 8876 Progress: 8080 on 8876 Progress: 8081 on 8876 Progress: 8082 on 8876 Progress: 8083 on 8876 Progress: 8084 on 8876 Progress: 8085 on 8876 Progress: 8086 on 8876 Progress: 8087 on 8876 Progress: 8088 on 8876 Progress: 8089 on 8876 Progress: 8090 on 8876 Progress: 8091 on 8876 Progress: 8092 on 8876 Progress: 8093 on 8876 Progress: 8094 on 8876 Progress: 8095 on 8876 Progress: 8096 on 8876 Progress: 8097 on 8876 Progress: 8098 on 8876 Progress: 8099 on 8876 Progress: 8100 on 8876 Progress: 8101 on 8876 Progress: 8102 on 8876 Progress: 8103 on 8876 Progress: 8104 on 8876 Progress: 8105 on 8876 Progress: 8106 on 8876 Progress: 8107 on 8876 Progress: 8108 on 8876 Progress: 8109 on 8876 Progress: 8110 on 8876 Progress: 8111 on 8876 Progress: 8112 on 8876 Progress: 8113 on 8876 Progress: 8114 on 8876 Progress: 8115 on 8876 Progress: 8116 on 8876 Progress: 8117 on 8876 Progress: 8118 on 8876 Progress: 8119 on 8876 Progress: 8120 on 8876 Progress: 8121 on 8876 Progress: 8122 on 8876 Progress: 8123 on 8876 Progress: 8124 on 8876 Progress: 8125 on 8876 Progress: 8126 on 8876 Progress: 8127 on 8876 Progress: 8128 on 8876 Progress: 8129 on 8876 Progress: 8130 on 8876 Progress: 8131 on 8876 Progress: 8132 on 8876 Progress: 8133 on 8876 Progress: 8134 on 8876 Progress: 8135 on 8876 Progress: 8136 on 8876 Progress: 8137 on 8876 Progress: 8138 on 8876 Progress: 8139 on 8876 Progress: 8140 on 8876 Progress: 8141 on 8876 Progress: 8142 on 8876 Progress: 8143 on 8876 Progress: 8144 on 8876 Progress: 8145 on 8876 Progress: 8146 on 8876 Progress: 8147 on 8876 Progress: 8148 on 8876 Progress: 8149 on 8876 Progress: 8150 on 8876 Progress: 8151 on 8876 Progress: 8152 on 8876 Progress: 8153 on 8876 Progress: 8154 on 8876 Progress: 8155 on 8876 Progress: 8156 on 8876 Progress: 8157 on 8876 Progress: 8158 on 8876 Progress: 8159 on 8876 Progress: 8160 on 8876 Progress: 8161 on 8876 Progress: 8162 on 8876 Progress: 8163 on 8876 Progress: 8164 on 8876 Progress: 8165 on 8876 Progress: 8166 on 8876 Progress: 8167 on 8876 Progress: 8168 on 8876 Progress: 8169 on 8876 Progress: 8170 on 8876 Progress: 8171 on 8876 Progress: 8172 on 8876 Progress: 8173 on 8876 Progress: 8174 on 8876 Progress: 8175 on 8876 Progress: 8176 on 8876 Progress: 8177 on 8876 Progress: 8178 on 8876 Progress: 8179 on 8876 Progress: 8180 on 8876 Progress: 8181 on 8876 Progress: 8182 on 8876 Progress: 8183 on 8876 Progress: 8184 on 8876 Progress: 8185 on 8876 Progress: 8186 on 8876 Progress: 8187 on 8876 Progress: 8188 on 8876 Progress: 8189 on 8876 Progress: 8190 on 8876 Progress: 8191 on 8876 Progress: 8192 on 8876 Progress: 8193 on 8876 Progress: 8194 on 8876 Progress: 8195 on 8876 Progress: 8196 on 8876 Progress: 8197 on 8876 Progress: 8198 on 8876 Progress: 8199 on 8876 Progress: 8200 on 8876 Progress: 8201 on 8876 Progress: 8202 on 8876 Progress: 8203 on 8876 Progress: 8204 on 8876 Progress: 8205 on 8876 Progress: 8206 on 8876 Progress: 8207 on 8876 Progress: 8208 on 8876 Progress: 8209 on 8876 Progress: 8210 on 8876 Progress: 8211 on 8876 Progress: 8212 on 8876 Progress: 8213 on 8876 Progress: 8214 on 8876 Progress: 8215 on 8876 Progress: 8216 on 8876 Progress: 8217 on 8876 Progress: 8218 on 8876 Progress: 8219 on 8876 Progress: 8220 on 8876 Progress: 8221 on 8876 Progress: 8222 on 8876 Progress: 8223 on 8876 Progress: 8224 on 8876 Progress: 8225 on 8876 Progress: 8226 on 8876 Progress: 8227 on 8876 Progress: 8228 on 8876 Progress: 8229 on 8876 Progress: 8230 on 8876 Progress: 8231 on 8876 Progress: 8232 on 8876 Progress: 8233 on 8876 Progress: 8234 on 8876 Progress: 8235 on 8876 Progress: 8236 on 8876 Progress: 8237 on 8876 Progress: 8238 on 8876 Progress: 8239 on 8876 Progress: 8240 on 8876 Progress: 8241 on 8876 Progress: 8242 on 8876 Progress: 8243 on 8876 Progress: 8244 on 8876 Progress: 8245 on 8876 Progress: 8246 on 8876 Progress: 8247 on 8876 Progress: 8248 on 8876 Progress: 8249 on 8876 Progress: 8250 on 8876 Progress: 8251 on 8876 Progress: 8252 on 8876 Progress: 8253 on 8876 Progress: 8254 on 8876 Progress: 8255 on 8876 Progress: 8256 on 8876 Progress: 8257 on 8876 Progress: 8258 on 8876 Progress: 8259 on 8876 Progress: 8260 on 8876 Progress: 8261 on 8876 Progress: 8262 on 8876 Progress: 8263 on 8876 Progress: 8264 on 8876 Progress: 8265 on 8876 Progress: 8266 on 8876 Progress: 8267 on 8876 Progress: 8268 on 8876 Progress: 8269 on 8876 Progress: 8270 on 8876 Progress: 8271 on 8876 Progress: 8272 on 8876 Progress: 8273 on 8876 Progress: 8274 on 8876 Progress: 8275 on 8876 Progress: 8276 on 8876 Progress: 8277 on 8876 Progress: 8278 on 8876 Progress: 8279 on 8876 Progress: 8280 on 8876 Progress: 8281 on 8876 Progress: 8282 on 8876 Progress: 8283 on 8876 Progress: 8284 on 8876 Progress: 8285 on 8876 Progress: 8286 on 8876 Progress: 8287 on 8876 Progress: 8288 on 8876 Progress: 8289 on 8876 Progress: 8290 on 8876 Progress: 8291 on 8876 Progress: 8292 on 8876 Progress: 8293 on 8876 Progress: 8294 on 8876 Progress: 8295 on 8876 Progress: 8296 on 8876 Progress: 8297 on 8876 Progress: 8298 on 8876 Progress: 8299 on 8876 Progress: 8300 on 8876 Progress: 8301 on 8876 Progress: 8302 on 8876 Progress: 8303 on 8876 Progress: 8304 on 8876 Progress: 8305 on 8876 Progress: 8306 on 8876 Progress: 8307 on 8876 Progress: 8308 on 8876 Progress: 8309 on 8876 Progress: 8310 on 8876 Progress: 8311 on 8876 Progress: 8312 on 8876 Progress: 8313 on 8876 Progress: 8314 on 8876 Progress: 8315 on 8876 Progress: 8316 on 8876 Progress: 8317 on 8876 Progress: 8318 on 8876 Progress: 8319 on 8876 Progress: 8320 on 8876 Progress: 8321 on 8876 Progress: 8322 on 8876 Progress: 8323 on 8876 Progress: 8324 on 8876 Progress: 8325 on 8876 Progress: 8326 on 8876 Progress: 8327 on 8876 Progress: 8328 on 8876 Progress: 8329 on 8876 Progress: 8330 on 8876 Progress: 8331 on 8876 Progress: 8332 on 8876 Progress: 8333 on 8876 Progress: 8334 on 8876 Progress: 8335 on 8876 Progress: 8336 on 8876 Progress: 8337 on 8876 Progress: 8338 on 8876 Progress: 8339 on 8876 Progress: 8340 on 8876 Progress: 8341 on 8876 Progress: 8342 on 8876 Progress: 8343 on 8876 Progress: 8344 on 8876 Progress: 8345 on 8876 Progress: 8346 on 8876 Progress: 8347 on 8876 Progress: 8348 on 8876 Progress: 8349 on 8876 Progress: 8350 on 8876 Progress: 8351 on 8876 Progress: 8352 on 8876 Progress: 8353 on 8876 Progress: 8354 on 8876 Progress: 8355 on 8876 Progress: 8356 on 8876 Progress: 8357 on 8876 Progress: 8358 on 8876 Progress: 8359 on 8876 Progress: 8360 on 8876 Progress: 8361 on 8876 Progress: 8362 on 8876 Progress: 8363 on 8876 Progress: 8364 on 8876 Progress: 8365 on 8876 Progress: 8366 on 8876 Progress: 8367 on 8876 Progress: 8368 on 8876 Progress: 8369 on 8876 Progress: 8370 on 8876 Progress: 8371 on 8876 Progress: 8372 on 8876 Progress: 8373 on 8876 Progress: 8374 on 8876 Progress: 8375 on 8876 Progress: 8376 on 8876 Progress: 8377 on 8876 Progress: 8378 on 8876 Progress: 8379 on 8876 Progress: 8380 on 8876 Progress: 8381 on 8876 Progress: 8382 on 8876 Progress: 8383 on 8876 Progress: 8384 on 8876 Progress: 8385 on 8876 Progress: 8386 on 8876 Progress: 8387 on 8876 Progress: 8388 on 8876 Progress: 8389 on 8876 Progress: 8390 on 8876 Progress: 8391 on 8876 Progress: 8392 on 8876 Progress: 8393 on 8876 Progress: 8394 on 8876 Progress: 8395 on 8876 Progress: 8396 on 8876 Progress: 8397 on 8876 Progress: 8398 on 8876 Progress: 8399 on 8876 Progress: 8400 on 8876 Progress: 8401 on 8876 Progress: 8402 on 8876 Progress: 8403 on 8876 Progress: 8404 on 8876 Progress: 8405 on 8876 Progress: 8406 on 8876 Progress: 8407 on 8876 Progress: 8408 on 8876 Progress: 8409 on 8876 Progress: 8410 on 8876 Progress: 8411 on 8876 Progress: 8412 on 8876 Progress: 8413 on 8876 Progress: 8414 on 8876 Progress: 8415 on 8876 Progress: 8416 on 8876 Progress: 8417 on 8876 Progress: 8418 on 8876 Progress: 8419 on 8876 Progress: 8420 on 8876 Progress: 8421 on 8876 Progress: 8422 on 8876 Progress: 8423 on 8876 Progress: 8424 on 8876 Progress: 8425 on 8876 Progress: 8426 on 8876 Progress: 8427 on 8876 Progress: 8428 on 8876 Progress: 8429 on 8876 Progress: 8430 on 8876 Progress: 8431 on 8876 Progress: 8432 on 8876 Progress: 8433 on 8876 Progress: 8434 on 8876 Progress: 8435 on 8876 Progress: 8436 on 8876 Progress: 8437 on 8876 Progress: 8438 on 8876 Progress: 8439 on 8876 Progress: 8440 on 8876 Progress: 8441 on 8876 Progress: 8442 on 8876 Progress: 8443 on 8876 Progress: 8444 on 8876 Progress: 8445 on 8876 Progress: 8446 on 8876 Progress: 8447 on 8876 Progress: 8448 on 8876 Progress: 8449 on 8876 Progress: 8450 on 8876 Progress: 8451 on 8876 Progress: 8452 on 8876 Progress: 8453 on 8876 Progress: 8454 on 8876 Progress: 8455 on 8876 Progress: 8456 on 8876 Progress: 8457 on 8876 Progress: 8458 on 8876 Progress: 8459 on 8876 Progress: 8460 on 8876 Progress: 8461 on 8876 Progress: 8462 on 8876 Progress: 8463 on 8876 Progress: 8464 on 8876 Progress: 8465 on 8876 Progress: 8466 on 8876 Progress: 8467 on 8876 Progress: 8468 on 8876 Progress: 8469 on 8876 Progress: 8470 on 8876 Progress: 8471 on 8876 Progress: 8472 on 8876 Progress: 8473 on 8876 Progress: 8474 on 8876 Progress: 8475 on 8876 Progress: 8476 on 8876 Progress: 8477 on 8876 Progress: 8478 on 8876 Progress: 8479 on 8876 Progress: 8480 on 8876 Progress: 8481 on 8876 Progress: 8482 on 8876 Progress: 8483 on 8876 Progress: 8484 on 8876 Progress: 8485 on 8876 Progress: 8486 on 8876 Progress: 8487 on 8876 Progress: 8488 on 8876 Progress: 8489 on 8876 Progress: 8490 on 8876 Progress: 8491 on 8876 Progress: 8492 on 8876 Progress: 8493 on 8876 Progress: 8494 on 8876 Progress: 8495 on 8876 Progress: 8496 on 8876 Progress: 8497 on 8876 Progress: 8498 on 8876 Progress: 8499 on 8876 Progress: 8500 on 8876 Progress: 8501 on 8876 Progress: 8502 on 8876 Progress: 8503 on 8876 Progress: 8504 on 8876 Progress: 8505 on 8876 Progress: 8506 on 8876 Progress: 8507 on 8876 Progress: 8508 on 8876 Progress: 8509 on 8876 Progress: 8510 on 8876 Progress: 8511 on 8876 Progress: 8512 on 8876 Progress: 8513 on 8876 Progress: 8514 on 8876 Progress: 8515 on 8876 Progress: 8516 on 8876 Progress: 8517 on 8876 Progress: 8518 on 8876 Progress: 8519 on 8876 Progress: 8520 on 8876 Progress: 8521 on 8876 Progress: 8522 on 8876 Progress: 8523 on 8876 Progress: 8524 on 8876 Progress: 8525 on 8876 Progress: 8526 on 8876 Progress: 8527 on 8876 Progress: 8528 on 8876 Progress: 8529 on 8876 Progress: 8530 on 8876 Progress: 8531 on 8876 Progress: 8532 on 8876 Progress: 8533 on 8876 Progress: 8534 on 8876 Progress: 8535 on 8876 Progress: 8536 on 8876 Progress: 8537 on 8876 Progress: 8538 on 8876 Progress: 8539 on 8876 Progress: 8540 on 8876 Progress: 8541 on 8876 Progress: 8542 on 8876 Progress: 8543 on 8876 Progress: 8544 on 8876 Progress: 8545 on 8876 Progress: 8546 on 8876 Progress: 8547 on 8876 Progress: 8548 on 8876 Progress: 8549 on 8876 Progress: 8550 on 8876 Progress: 8551 on 8876 Progress: 8552 on 8876 Progress: 8553 on 8876 Progress: 8554 on 8876 Progress: 8555 on 8876 Progress: 8556 on 8876 Progress: 8557 on 8876 Progress: 8558 on 8876 Progress: 8559 on 8876 Progress: 8560 on 8876 Progress: 8561 on 8876 Progress: 8562 on 8876 Progress: 8563 on 8876 Progress: 8564 on 8876 Progress: 8565 on 8876 Progress: 8566 on 8876 Progress: 8567 on 8876 Progress: 8568 on 8876 Progress: 8569 on 8876 Progress: 8570 on 8876 Progress: 8571 on 8876 Progress: 8572 on 8876 Progress: 8573 on 8876 Progress: 8574 on 8876 Progress: 8575 on 8876 Progress: 8576 on 8876 Progress: 8577 on 8876 Progress: 8578 on 8876 Progress: 8579 on 8876 Progress: 8580 on 8876 Progress: 8581 on 8876 Progress: 8582 on 8876 Progress: 8583 on 8876 Progress: 8584 on 8876 Progress: 8585 on 8876 Progress: 8586 on 8876 Progress: 8587 on 8876 Progress: 8588 on 8876 Progress: 8589 on 8876 Progress: 8590 on 8876 Progress: 8591 on 8876 Progress: 8592 on 8876 Progress: 8593 on 8876 Progress: 8594 on 8876 Progress: 8595 on 8876 Progress: 8596 on 8876 Progress: 8597 on 8876 Progress: 8598 on 8876 Progress: 8599 on 8876 Progress: 8600 on 8876 Progress: 8601 on 8876 Progress: 8602 on 8876 Progress: 8603 on 8876 Progress: 8604 on 8876 Progress: 8605 on 8876 Progress: 8606 on 8876 Progress: 8607 on 8876 Progress: 8608 on 8876 Progress: 8609 on 8876 Progress: 8610 on 8876 Progress: 8611 on 8876 Progress: 8612 on 8876 Progress: 8613 on 8876 Progress: 8614 on 8876 Progress: 8615 on 8876 Progress: 8616 on 8876 Progress: 8617 on 8876 Progress: 8618 on 8876 Progress: 8619 on 8876 Progress: 8620 on 8876 Progress: 8621 on 8876 Progress: 8622 on 8876 Progress: 8623 on 8876 Progress: 8624 on 8876 Progress: 8625 on 8876 Progress: 8626 on 8876 Progress: 8627 on 8876 Progress: 8628 on 8876 Progress: 8629 on 8876 Progress: 8630 on 8876 Progress: 8631 on 8876 Progress: 8632 on 8876 Progress: 8633 on 8876 Progress: 8634 on 8876 Progress: 8635 on 8876 Progress: 8636 on 8876 Progress: 8637 on 8876 Progress: 8638 on 8876 Progress: 8639 on 8876 Progress: 8640 on 8876 Progress: 8641 on 8876 Progress: 8642 on 8876 Progress: 8643 on 8876 Progress: 8644 on 8876 Progress: 8645 on 8876 Progress: 8646 on 8876 Progress: 8647 on 8876 Progress: 8648 on 8876 Progress: 8649 on 8876 Progress: 8650 on 8876 Progress: 8651 on 8876 Progress: 8652 on 8876 Progress: 8653 on 8876 Progress: 8654 on 8876 Progress: 8655 on 8876 Progress: 8656 on 8876 Progress: 8657 on 8876 Progress: 8658 on 8876 Progress: 8659 on 8876 Progress: 8660 on 8876 Progress: 8661 on 8876 Progress: 8662 on 8876 Progress: 8663 on 8876 Progress: 8664 on 8876 Progress: 8665 on 8876 Progress: 8666 on 8876 Progress: 8667 on 8876 Progress: 8668 on 8876 Progress: 8669 on 8876 Progress: 8670 on 8876 Progress: 8671 on 8876 Progress: 8672 on 8876 Progress: 8673 on 8876 Progress: 8674 on 8876 Progress: 8675 on 8876 Progress: 8676 on 8876 Progress: 8677 on 8876 Progress: 8678 on 8876 Progress: 8679 on 8876 Progress: 8680 on 8876 Progress: 8681 on 8876 Progress: 8682 on 8876 Progress: 8683 on 8876 Progress: 8684 on 8876 Progress: 8685 on 8876 Progress: 8686 on 8876 Progress: 8687 on 8876 Progress: 8688 on 8876 Progress: 8689 on 8876 Progress: 8690 on 8876 Progress: 8691 on 8876 Progress: 8692 on 8876 Progress: 8693 on 8876 Progress: 8694 on 8876 Progress: 8695 on 8876 Progress: 8696 on 8876 Progress: 8697 on 8876 Progress: 8698 on 8876 Progress: 8699 on 8876 Progress: 8700 on 8876 Progress: 8701 on 8876 Progress: 8702 on 8876 Progress: 8703 on 8876 Progress: 8704 on 8876 Progress: 8705 on 8876 Progress: 8706 on 8876 Progress: 8707 on 8876 Progress: 8708 on 8876 Progress: 8709 on 8876 Progress: 8710 on 8876 Progress: 8711 on 8876 Progress: 8712 on 8876 Progress: 8713 on 8876 Progress: 8714 on 8876 Progress: 8715 on 8876 Progress: 8716 on 8876 Progress: 8717 on 8876 Progress: 8718 on 8876 Progress: 8719 on 8876 Progress: 8720 on 8876 Progress: 8721 on 8876 Progress: 8722 on 8876 Progress: 8723 on 8876 Progress: 8724 on 8876 Progress: 8725 on 8876 Progress: 8726 on 8876 Progress: 8727 on 8876 Progress: 8728 on 8876 Progress: 8729 on 8876 Progress: 8730 on 8876 Progress: 8731 on 8876 Progress: 8732 on 8876 Progress: 8733 on 8876 Progress: 8734 on 8876 Progress: 8735 on 8876 Progress: 8736 on 8876 Progress: 8737 on 8876 Progress: 8738 on 8876 Progress: 8739 on 8876 Progress: 8740 on 8876 Progress: 8741 on 8876 Progress: 8742 on 8876 Progress: 8743 on 8876 Progress: 8744 on 8876 Progress: 8745 on 8876 Progress: 8746 on 8876 Progress: 8747 on 8876 Progress: 8748 on 8876 Progress: 8749 on 8876 Progress: 8750 on 8876 Progress: 8751 on 8876 Progress: 8752 on 8876 Progress: 8753 on 8876 Progress: 8754 on 8876 Progress: 8755 on 8876 Progress: 8756 on 8876 Progress: 8757 on 8876 Progress: 8758 on 8876 Progress: 8759 on 8876 Progress: 8760 on 8876 Progress: 8761 on 8876 Progress: 8762 on 8876 Progress: 8763 on 8876 Progress: 8764 on 8876 Progress: 8765 on 8876 Progress: 8766 on 8876 Progress: 8767 on 8876 Progress: 8768 on 8876 Progress: 8769 on 8876 Progress: 8770 on 8876 Progress: 8771 on 8876 Progress: 8772 on 8876 Progress: 8773 on 8876 Progress: 8774 on 8876 Progress: 8775 on 8876 Progress: 8776 on 8876 Progress: 8777 on 8876 Progress: 8778 on 8876 Progress: 8779 on 8876 Progress: 8780 on 8876 Progress: 8781 on 8876 Progress: 8782 on 8876 Progress: 8783 on 8876 Progress: 8784 on 8876 Progress: 8785 on 8876 Progress: 8786 on 8876 Progress: 8787 on 8876 Progress: 8788 on 8876 Progress: 8789 on 8876 Progress: 8790 on 8876 Progress: 8791 on 8876 Progress: 8792 on 8876 Progress: 8793 on 8876 Progress: 8794 on 8876 Progress: 8795 on 8876 Progress: 8796 on 8876 Progress: 8797 on 8876 Progress: 8798 on 8876 Progress: 8799 on 8876 Progress: 8800 on 8876 Progress: 8801 on 8876 Progress: 8802 on 8876 Progress: 8803 on 8876 Progress: 8804 on 8876 Progress: 8805 on 8876 Progress: 8806 on 8876 Progress: 8807 on 8876 Progress: 8808 on 8876 Progress: 8809 on 8876 Progress: 8810 on 8876 Progress: 8811 on 8876 Progress: 8812 on 8876 Progress: 8813 on 8876 Progress: 8814 on 8876 Progress: 8815 on 8876 Progress: 8816 on 8876 Progress: 8817 on 8876 Progress: 8818 on 8876 Progress: 8819 on 8876 Progress: 8820 on 8876 Progress: 8821 on 8876 Progress: 8822 on 8876 Progress: 8823 on 8876 Progress: 8824 on 8876 Progress: 8825 on 8876 Progress: 8826 on 8876 Progress: 8827 on 8876 Progress: 8828 on 8876 Progress: 8829 on 8876 Progress: 8830 on 8876 Progress: 8831 on 8876 Progress: 8832 on 8876 Progress: 8833 on 8876 Progress: 8834 on 8876 Progress: 8835 on 8876 Progress: 8836 on 8876 Progress: 8837 on 8876 Progress: 8838 on 8876 Progress: 8839 on 8876 Progress: 8840 on 8876 Progress: 8841 on 8876 Progress: 8842 on 8876 Progress: 8843 on 8876 Progress: 8844 on 8876 Progress: 8845 on 8876 Progress: 8846 on 8876 Progress: 8847 on 8876 Progress: 8848 on 8876 Progress: 8849 on 8876 Progress: 8850 on 8876 Progress: 8851 on 8876 Progress: 8852 on 8876 Progress: 8853 on 8876 Progress: 8854 on 8876 Progress: 8855 on 8876 Progress: 8856 on 8876 Progress: 8857 on 8876 Progress: 8858 on 8876 Progress: 8859 on 8876 Progress: 8860 on 8876 Progress: 8861 on 8876 Progress: 8862 on 8876 Progress: 8863 on 8876 Progress: 8864 on 8876 Progress: 8865 on 8876 Progress: 8866 on 8876 Progress: 8867 on 8876 Progress: 8868 on 8876 Progress: 8869 on 8876 Progress: 8870 on 8876 Progress: 8871 on 8876 Progress: 8872 on 8876 Progress: 8873 on 8876 Progress: 8874 on 8876 Progress: 8875 on 8876 Progress: 8876 on 8876
za_instytucja <- za_instytucja %>%
filter(is.na(czy_nazwisko)&is.na(czy_imie)) %>%
filter(instytucja!="") %>%
filter(!grepl("^\\[[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]|^[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]",instytucja)) %>%
mutate(instytucja = str_remove(instytucja,"\\.$")) %>%
select(ZA_UWAGI,instytucja) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#10: wydawnictwo
BN_wydawnictwo <- data %>%
select(ZA_UWAGI, X260) %>%
mutate(X260 = str_replace_all(X260,"s\\.n\\.", "b.w."),
X260 = str_replace_all(X260,"s\\.l\\.", "b.m."),
X260 = str_replace_all(X260,"S\\.l\\.", "b.m."),
X260 = str_remove(X260,"^\\\\+"),
rok_wydania = str_extract_all(X260, "(?<=\\$c).*(?=\\$e)|(?<=\\$c).*"),
bez_roku = str_replace_all(X260, ".\\$c.*", ""),
ile_wydawnictw = str_count(bez_roku, "\\$b"),
ile_miejsc = str_count(bez_roku, "\\$a"),
kolejnosc = str_replace_all(as.character(str_extract_all(bez_roku, "\\$.")), "[^a-z]", ""),
bez_roku = str_replace_all(bez_roku, ";\\$b", ":$b"),
wydaw_podziel = ifelse(ile_wydawnictw>ile_miejsc|kolejnosc=="caabb", str_replace_all(bez_roku, "(\\$a)(.*?)( :\\$b.*?)( :\\$b)", "\\1\\2\\3 ;$a\\2\\4"),bez_roku),
wydawnictwo_test = str_replace_all(wydaw_podziel, "(\\$b)(.*?)( ;\\$a)", "\\1\\2|\\3")) %>%
select(ZA_UWAGI,rok_wydania,wydawnictwo_test) %>%
cSplit(., "wydawnictwo_test", sep = "|", direction = "long") %>%
mutate(wydawnictwo = str_extract_all(wydawnictwo_test, "(?<=\\$b)(.*)"),
miejsce_wydania = str_replace_all(str_extract_all(wydawnictwo_test, "(?<=\\$a)(.*)(?= {0,1}: {0,1}\\$b)|(?<=\\$a)(.*)($)")," ;\\$a", ", "),
nazwa_prosta = str_to_lower(str_replace_all(str_replace_all(unlist(wydawnictwo_test), "\\$\\w", ""), "\\W", ""))) %>%
left_join(.,PBL_wydawnictwa,by="nazwa_prosta") %>%
mutate(to_samo = wydawnictwo==WY_NAZWA) %>%
arrange(ZA_UWAGI,-to_samo,-WY_LICZBA_ZAPISOW)
BN_wydawnictwo$id_grupy <- cumsum(!duplicated(BN_wydawnictwo[1:3]))
BN_wydawnictwo <- BN_wydawnictwo[!duplicated(BN_wydawnictwo$id_grupy),] %>%
mutate(WY_NAZWA = ifelse(!is.na(WY_NAZWA),as.character(WY_NAZWA),as.character(wydawnictwo)),
WY_MIASTO = ifelse(!is.na(WY_MIASTO),as.character(WY_MIASTO),trim(as.character(miejsce_wydania))),
rok_wydania = str_replace_all(rok_wydania, "(.*)(\\.)", "\\1"),
za_rok_wydania = ifelse(nchar(rok_wydania)==4,as.character(rok_wydania),NA),
do_opisu = ifelse(is.na(za_rok_wydania),paste("[",str_extract(rok_wydania,"\\d{4}"),"]",sep = ""),""),
WY_MIASTO = ifelse(substr(WY_MIASTO,1,1)=="["&substr(WY_MIASTO,nchar(WY_MIASTO),nchar(WY_MIASTO))!="]"&is.na(WY_WYDAWNICTWO_ID),paste(trim(WY_MIASTO),"]",sep = ""),as.character(WY_MIASTO))) %>%
select(ZA_UWAGI,WY_WYDAWNICTWO_ID,WY_NAZWA,WY_MIASTO,za_rok_wydania,do_opisu) %>%
mutate(WY_NAZWA = ifelse(str_count(WY_NAZWA, "\\[")>str_count(WY_NAZWA, "\\]"), paste(WY_NAZWA, "]", sep = ""),
ifelse(str_count(WY_NAZWA, "\\[")<str_count(WY_NAZWA, "\\]"), paste("[", WY_NAZWA, sep = ""), as.character(WY_NAZWA))),
WY_MIASTO = ifelse(str_count(WY_MIASTO, "\\[")>str_count(WY_MIASTO, "\\]"), paste(WY_MIASTO, "]", sep = ""),
ifelse(str_count(WY_MIASTO, "\\[")<str_count(WY_MIASTO, "\\]"), paste("[", WY_MIASTO, sep = ""), as.character(WY_MIASTO))))
argument is not an atomic vector; coercing
#11: opis fizyczny książki
#pole 300 do opisu fizycznego
marc_field_300 <- data %>%
select(ZA_UWAGI,X300)%>%
filter(X300!="") %>%
mutate(X300=str_replace_all(X300,"(^|\\|)","~\\1")) %>%
cSplit(.,"X300",sep = "~",direction = "long") %>%
filter(X300!="") %>%
mutate(X300=str_remove_all(X300,"^\\|")) %>%
mutate(indicator = str_replace_all(X300,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X300,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_300)[1]))
colnames(empty_table) <-subfield_list
marc_field_300<-cbind(marc_field_300,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_300$X300 <- str_replace(marc_field_300$X300,subfield_list_char[i],"|\\1")
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_300[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_300$X300),str_replace_all(gsub(string,"\\3",marc_field_300$X300),"\\${2}.", "~"),NA)
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
marc_field_300 <- marc_field_300 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$b` = str_remove(`$b`," \\;+$| \\:+$"),
`$e` = ifelse(grepl("CD-ROM|DVD|VCD|CD",`$e`)&grepl("\\+ dysk|płyt",`$e`),str_extract(`$e`,"(?<=\\+)(dysk|płyt.*?)(CD-ROM|DVD|VCD|CD)(\\)){0,1}"),
ifelse(grepl("CD-ROM|DVD|VCD|CD",`$e`),str_extract(`$e`,"(^.*?)(CD-ROM|DVD|VCD|CD)(\\)){0,1}"),NA)),
`$a` = ifelse(is.na(`$a`),"",as.character(`$a`)),
`$b` = ifelse(is.na(`$b`),"",as.character(`$b`)),
`$e` = ifelse(is.na(`$e`),"",as.character(`$e`)))
#pole 500 do opisu fizycznego
marc_field_500 <- data %>%
select(ZA_UWAGI,X500)%>%
filter(X500!="") %>%
mutate(X500=str_replace_all(X500,"(^|\\|)","~\\1")) %>%
cSplit(.,"X500",sep = "~",direction = "long") %>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"^\\|")) %>%
mutate(indicator = str_replace_all(X500,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X500,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_500)[1]))
colnames(empty_table) <-subfield_list
marc_field_500<-cbind(marc_field_500,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_500$X500 <- str_replace(marc_field_500$X500,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_500[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_500$X500),str_replace_all(gsub(string,"\\3",marc_field_500$X500),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_500 <- marc_field_500 %>%
mutate(`$a` = ifelse(grepl("oryg(\\.|\\,)",X500)&grepl("pseud|nazwa",X500,ignore.case = TRUE),str_replace(`$a`,"(^.*?)(\\. )(\\p{Lu}.*$)","\\3"),as.character(`$a`))) %>%
filter(!grepl("oryg(\\.|\\,)",`$a`)&grepl("pseud|nazwa|dotycz|pol",`$a`,ignore.case = TRUE)) %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"))
#pole 546 do opisu fizycznego
marc_field_546 <- data %>%
select(ZA_UWAGI,X546)%>%
filter(X546!="") %>%
mutate(X546=str_replace_all(X546,"(^|\\|)","~\\1")) %>%
cSplit(.,"X546",sep = "~",direction = "long") %>%
filter(X546!="") %>%
mutate(X546=str_remove_all(X546,"^\\|")) %>%
mutate(indicator = str_replace_all(X546,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X546,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_546)[1]))
colnames(empty_table) <-subfield_list
marc_field_546<-cbind(marc_field_546,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_546$X546 <- str_replace(marc_field_546$X546,subfield_list_char[i],"|\\1")
}
Progress: 1 on 2 Progress: 2 on 2
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_546[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_546$X546),str_replace_all(gsub(string,"\\3",marc_field_546$X546),"\\${2}.", "~"),NA)
}
Progress: 1 on 2 Progress: 2 on 2
marc_field_546 <- marc_field_546 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"))
#pole 501 do opisu fizycznego
marc_field_501 <- data %>%
select(ZA_UWAGI,X501)%>%
filter(X501!="") %>%
mutate(X501=str_replace_all(X501,"(^|\\|)","~\\1")) %>%
cSplit(.,"X501",sep = "~",direction = "long") %>%
filter(X501!="") %>%
mutate(X501=str_remove_all(X501,"^\\|")) %>%
mutate(indicator = str_replace_all(X501,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X501,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_501)[1]))
colnames(empty_table) <-subfield_list
marc_field_501<-cbind(marc_field_501,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_501$X501 <- str_replace(marc_field_501$X501,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_501[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_501$X501),str_replace_all(gsub(string,"\\3",marc_field_501$X501),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_501 <- marc_field_501 %>%
select(ZA_UWAGI, `$a`)
za_opis_ks <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,do_opisu),by="ZA_UWAGI") %>%
left_join(.,marc_field_300 %>% select(ZA_UWAGI,X300a=`$a`,X300b=`$b`,X300e=`$e`),by="ZA_UWAGI") %>%
left_join(.,marc_field_500 %>% select(ZA_UWAGI,X500a=`$a`),by="ZA_UWAGI") %>%
left_join(.,marc_field_546 %>% select(ZA_UWAGI,X546a=`$a`),by="ZA_UWAGI") %>%
left_join(.,marc_field_501 %>% select(ZA_UWAGI,X501a=`$a`),by="ZA_UWAGI")
za_opis_ks[is.na(za_opis_ks)] <- ""
za_opis_ks <- za_opis_ks %>%
mutate(za_opis_ks = paste(ifelse(do_opisu!="",paste(as.character(do_opisu),", ",sep = ""),""),ifelse(X300a!="",paste(as.character(X300a),", ",sep = ""),""),ifelse(X300b!="",paste(as.character(X300b),", ",sep = ""),""),ifelse(X300e!="",paste(as.character(X300e),", ",sep = ""),""),ifelse(X500a!="",paste(as.character(X500a),", ",sep = ""),""),ifelse(X546a!="",as.character(X546a),""),ifelse(X501a!="",as.character(X501a),""),sep = ""),
za_opis_ks = str_remove(za_opis_ks,"(, )+$")) %>%
select(ZA_UWAGI,za_opis_ks) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(za_opis_ks))
za_opis_ks$id_grupy <- cumsum(!duplicated(za_opis_ks[1]))
za_opis_ks <- za_opis_ks[!duplicated(za_opis_ks$id_grupy),] %>%
select(-id_grupy)
#12: seria wydawnicza
marc_field_490 <- data %>%
select(ZA_UWAGI,X490,X800,X830) %>%
mutate(X490 = ifelse(grepl("U\\+",X490),as.character(X830),as.character(X490))) %>%
mutate(X800 = ifelse(X490!="","",as.character(X800)),
X830 = ifelse(X490!="","",as.character(X830)),
X800 = str_replace(X800,"(\\$a)(.*)(\\$t)","\\1"),
X490 = ifelse(X490==""&X830!="",as.character(X830),
ifelse(X490==""&X800!="",as.character(X800),as.character(X490)))) %>%
select(ZA_UWAGI,X490) %>%
filter(X490!="") %>%
mutate(X490=str_replace_all(X490,"(^|\\|)","~\\1")) %>%
cSplit(.,"X490",sep = "~",direction = "long") %>%
filter(X490!="") %>%
mutate(X490=str_remove_all(X490,"^\\|")) %>%
mutate(indicator = str_replace_all(X490,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X490,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_490)[1]))
colnames(empty_table) <-subfield_list
marc_field_490<-cbind(marc_field_490,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_490$X490 <- str_replace(marc_field_490$X490,subfield_list_char[i],"|\\1")
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_490[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_490$X490),str_replace_all(gsub(string,"\\3",marc_field_490$X490),"\\${2}.", "~"),NA)
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
za_seria_wydawnicza <- marc_field_490 %>%
mutate(`$a` = str_replace_all(`$a`,"(=)(\\$a)","\\1 "),
`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$v` = ifelse(is.na(`$v`),"",as.character(`$v`))) %>%
filter(!is.na(`$a`)) %>%
mutate(seria = str_remove(paste("(",`$a`,"; ",`$v`,")",sep = ""),"; (?=\\)$)"),
seria = gsub("( : )(.)",". \\U\\2",perl=TRUE,seria)) %>%
select(ZA_UWAGI,seria) %>%
group_by(ZA_UWAGI) %>%
mutate(seria = paste(seria,collapse = " ")) %>%
ungroup() %>%
unique() %>%
mutate(seria = str_replace_all(seria,"\\$.","; ")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#13: tomy
za_tomy <- data %>%
select(ZA_UWAGI) %>%
mutate(za_tomy = NA)
#14: adnotacje
za_adnotacje <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_autor %>% select(ZA_UWAGI,ZA_ADNOTACJE),by="ZA_UWAGI") %>%
left_join(.,BN_wspoltworca %>% select(ZA_UWAGI,ZA_ADNOTACJE),by="ZA_UWAGI") %>%
mutate(ZA_ADNOTACJE = paste(ifelse(is.na(ZA_ADNOTACJE.x),"",paste(as.character(ZA_ADNOTACJE.x),"# ",sep = "")),ifelse(is.na(ZA_ADNOTACJE.y),"",as.character(ZA_ADNOTACJE.y)),sep = ""),
ZA_ADNOTACJE = str_remove(ZA_ADNOTACJE,"(# )+$")) %>%
select(ZA_UWAGI,ZA_ADNOTACJE) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(ZA_ADNOTACJE))
za_adnotacje$id_grupy <- cumsum(!duplicated(za_adnotacje[1]))
za_adnotacje <- za_adnotacje[!duplicated(za_adnotacje$id_grupy),] %>%
select(-id_grupy)
#15: BN_URL
BN_URL <- data %>%
select(ZA_UWAGI,BN_URL)
#wyrównanie liczby wierszy do liczby wierszy obiektu data
BN_autor <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_autor %>% select(ZA_UWAGI,AM_AUTOR_ID,AM_NAZWISKO,AM_IMIE),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, AM_AUTOR_ID = paste(AM_AUTOR_ID, collapse="|"), AM_NAZWISKO = paste(AM_NAZWISKO, collapse="|"), AM_IMIE = paste(AM_IMIE, collapse="|"))
BN_wspoltworca <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wspoltworca %>% select(ZA_UWAGI,OS_OSOBA_ID,OS_NAZWISKO,OS_IMIE,fo_symbol),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, OS_OSOBA_ID = paste(OS_OSOBA_ID, collapse="|"), OS_NAZWISKO = paste(OS_NAZWISKO, collapse="|"), OS_IMIE = paste(OS_IMIE, collapse="|"), fo_symbol = paste(fo_symbol, collapse="|")) %>%
mutate(fo_symbol = ifelse(fo_symbol=="NULL","NA",as.character(fo_symbol)))
BN_wydawnictwo <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,WY_WYDAWNICTWO_ID,WY_NAZWA,WY_MIASTO,za_rok_wydania),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, WY_WYDAWNICTWO_ID = paste(WY_WYDAWNICTWO_ID, collapse="|"), WY_NAZWA = paste(WY_NAZWA, collapse="|"), WY_MIASTO = paste(WY_MIASTO, collapse="|"), za_rok_wydania = paste(unique(za_rok_wydania), collapse="|")) %>%
mutate(za_rok_wydania = ifelse(za_rok_wydania=="NA","",as.integer(za_rok_wydania)))
pojawi戼㸳y si攼㹡 warto㤼㹣ci NA na skutek przekszta戼㸳cenia
#połączenie wszystkich elementów w jedną tabelę
kolejnosc <- data.frame(kolejnosc=c("ZA_UWAGI","RZ_NAZWA","ZA_RO_ROK","ZA_TYPE","RZ_RODZAJ_ID","DZ_NAZWA","DZ_DZIAL_ID","TW_TWORCA_ID","AM_AUTOR_ID","AM_NAZWISKO","AM_IMIE","ZA_TYTUL","ZA_TYTUL_ORYGINALU","ZA_JEZYK_ORYGINALU","OS_OSOBA_ID","OS_NAZWISKO","OS_IMIE","fo_symbol","za_opis_wspoltworcow","wydanie","za_tomy","instytucja","WY_WYDAWNICTWO_ID","WY_MIASTO","WY_NAZWA","za_rok_wydania","za_opis_ks","seria","TW_NAZWISKO","TW_IMIE","redaktor_dzialu","ZA_ADNOTACJE","BN_URL"))
polaczone <- data %>%
select(ZA_UWAGI) %>%
left_join(.,pola_pbl,by = "ZA_UWAGI") %>%
left_join(.,BN_autor,by = "ZA_UWAGI") %>%
left_join(.,za_tytul,by = "ZA_UWAGI") %>%
left_join(.,za_tytul_oryginalu,by = "ZA_UWAGI") %>%
left_join(.,za_jezyk_oryginalu,by = "ZA_UWAGI") %>%
left_join(.,BN_wspoltworca,by = "ZA_UWAGI") %>%
left_join(.,za_opis_wspoltworcow,by = "ZA_UWAGI") %>%
left_join(.,za_wydanie,by = "ZA_UWAGI") %>%
left_join(.,za_instytucja,by = "ZA_UWAGI") %>%
left_join(.,BN_wydawnictwo,by = "ZA_UWAGI") %>%
left_join(.,za_opis_ks,by = "ZA_UWAGI") %>%
left_join(.,za_seria_wydawnicza,by = "ZA_UWAGI") %>%
left_join(.,za_tomy,by = "ZA_UWAGI") %>%
left_join(.,za_adnotacje,by = "ZA_UWAGI") %>%
left_join(.,BN_URL,by = "ZA_UWAGI") %>%
select(as.vector(kolejnosc$kolejnosc))
colnames(polaczone) <- c("rekord_BN","rz_nazwa","za_ro_rok","za_type","rz_rodzaj_id","DZ_NAZWA","DZ_DZIAL_ID","tw_tworca_id","am_autor_id","am_nazwisko","am_imie","za_tytul","za_tytul_oryginalu","za_jezyk_oryginalu","os_osoba_id","os_nazwisko","os_imie","fo_symbol","za_opis_wspoltworcow","za_wydanie","za_tomy","za_instytucja","wy_wydawnictwo_id","wy_miejsce","wy_nazwa","za_rok_wydania","za_opis_fizyczny_ksiazki","za_seria_wydawnicza","tw_nazwisko","tw_imie","pracownik","za_adnotacje","BN_URL")
#zasygnalizowanie niepoprawnego kodowania
x <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("<U\\+(....)>",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)!=0,paste(polaczone$za_adnotacje,paste("UWAGA! Błąd kodowania w polu ",as.character(names(polaczone[i]))," Znajdź frazę \"???\" i zredaguj pole.",sep = ""),sep = "# "),paste("UWAGA! Błąd kodowania w polu ",as.character(names(polaczone[i]))," Znajdź frazę \"???\" i zredaguj pole.",sep = "")),as.character(polaczone$za_adnotacje))
polaczone[,i] <- gsub("<U\\+(....)>", "???", polaczone[,i])
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności znaku $ w którymś z pól
X <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("\\$",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)==0,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano znak \"$\". Zredaguj treść pola.",sep = ""),paste(polaczone$za_adnotacje,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano znak \"$\". Zredaguj treść pola.",sep = ""),sep = "# ")),as.character(polaczone$za_adnotacje))
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności frazy "character(0)" w którymś z pól
X <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("character\\(0\\)",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)==0,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano frazę \"character(0)\". Zredaguj treść pola.",sep = ""),paste(polaczone$za_adnotacje,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano frazę \"character(0)\". Zredaguj treść pola.",sep = ""),sep = "# ")),as.character(polaczone$za_adnotacje))
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności znaku # w opisie współtwórców
polaczone$za_adnotacje <- ifelse(grepl("\\#",polaczone$za_opis_wspoltworcow),
ifelse(nchar(polaczone$za_adnotacje)==0,"UWAGA! Ze względu na konflikt w opisie współtwórców wybierz właściwą wartość (strefa odpowiedzialności \"#\" współtwórcy z pola 700).",paste(polaczone$za_adnotacje,"UWAGA! Ze względu na konflikt w opisie współtwórców wybierz właściwą wartość (strefa odpowiedzialności # współtwórcy z pola 700).",sep = "# ")),as.character(polaczone$za_adnotacje))
#korekta automatycznego IOK
automatyczny_IOK <- polaczone %>%
mutate(czy_tyt_oryg = (!grepl("polsk",DZ_NAZWA)&!is.na(za_tytul_oryginalu))|grepl("polsk",DZ_NAZWA)) %>%
filter(za_adnotacje==""&am_nazwisko!="NA"&!grepl("pseud|nazw",za_opis_fizyczny_ksiazki)&!grepl("\\|",am_nazwisko)&czy_tyt_oryg==TRUE,
!grepl("szkic|felieton|list",str_replace(za_tytul,"(.*)(\\[.*$)","\\2"),ignore.case = TRUE)) %>%
select(rekord_BN) %>%
unique() %>%
filter(rekord_BN %notin% data$ZA_UWAGI[data$czy_automatycznie=="nie"]) %>%
mutate(powinno_byc = "IOK")
write.csv2(automatyczny_IOK, paste("C:/Users/",employee_name,"/Desktop/imp_",import_year,"_automatyczne_podmiotowe.csv",sep = ""), row.names = F, na = '', fileEncoding = 'UTF-8')
out <- cSplit(polaczone, c("am_autor_id", "am_nazwisko", "am_imie","os_osoba_id","os_nazwisko", "os_imie", "fo_symbol","wy_wydawnictwo_id","wy_miejsce","wy_nazwa"),sep = "|",direction = "long") %>%
unique()
out$rekord_BN <- ifelse(is.na(out$rekord_BN),'',as.character(out$rekord_BN))
out$rz_nazwa <- ifelse(is.na(out$rz_nazwa),'',as.character(out$rz_nazwa))
out$za_ro_rok <- ifelse(is.na(out$za_ro_rok),'',as.character(out$za_ro_rok))
out$za_type <- ifelse(is.na(out$za_type),'',as.character(out$za_type))
out$rz_rodzaj_id <- ifelse(is.na(out$rz_rodzaj_id),'',as.character(out$rz_rodzaj_id))
out$DZ_NAZWA <- ifelse(is.na(out$DZ_NAZWA),'',as.character(out$DZ_NAZWA))
out$DZ_DZIAL_ID <- ifelse(is.na(out$DZ_DZIAL_ID),'',as.character(out$DZ_DZIAL_ID))
out$tw_tworca_id <- ifelse(is.na(out$tw_tworca_id),'',as.character(out$tw_tworca_id))
out$am_autor_id <- ifelse(is.na(out$am_autor_id),'',as.character(out$am_autor_id))
out$am_nazwisko <- ifelse(is.na(out$am_nazwisko),'',as.character(out$am_nazwisko))
out$am_imie <- ifelse(is.na(out$am_imie),'',as.character(out$am_imie))
out$za_tytul <- ifelse(is.na(out$za_tytul),'',as.character(out$za_tytul))
out$za_tytul_oryginalu <- ifelse(is.na(out$za_tytul_oryginalu),'',as.character(out$za_tytul_oryginalu))
out$za_jezyk_oryginalu <- ifelse(is.na(out$za_jezyk_oryginalu),'',as.character(out$za_jezyk_oryginalu))
out$os_osoba_id <- ifelse(is.na(out$os_osoba_id),'',as.character(out$os_osoba_id))
out$os_nazwisko <- ifelse(is.na(out$os_nazwisko),'',as.character(out$os_nazwisko))
out$os_imie <- ifelse(is.na(out$os_imie),'',as.character(out$os_imie))
out$fo_symbol <- ifelse(is.na(out$fo_symbol),'',as.character(out$fo_symbol))
out$za_opis_wspoltworcow <- ifelse(is.na(out$za_opis_wspoltworcow),'',as.character(out$za_opis_wspoltworcow))
out$za_wydanie <- ifelse(is.na(out$za_wydanie),'',as.character(out$za_wydanie))
out$za_tomy <- ifelse(is.na(out$za_tomy),'',as.character(out$za_tomy))
out$za_instytucja <- ifelse(is.na(out$za_instytucja),'',as.character(out$za_instytucja))
out$wy_wydawnictwo_id <- ifelse(is.na(out$wy_wydawnictwo_id),'',as.character(out$wy_wydawnictwo_id))
out$wy_miejsce <- ifelse(is.na(out$wy_miejsce),'',as.character(out$wy_miejsce))
out$wy_nazwa <- ifelse(is.na(out$wy_nazwa),'',as.character(out$wy_nazwa))
out$za_rok_wydania <- ifelse(is.na(out$za_rok_wydania),'',as.character(out$za_rok_wydania))
out$za_opis_fizyczny_ksiazki <- ifelse(is.na(out$za_opis_fizyczny_ksiazki),'',as.character(out$za_opis_fizyczny_ksiazki))
out$za_seria_wydawnicza <- ifelse(is.na(out$za_seria_wydawnicza),'',as.character(out$za_seria_wydawnicza))
out$tw_nazwisko <- ifelse(is.na(out$tw_nazwisko),'',as.character(out$tw_nazwisko))
out$tw_imie <- ifelse(is.na(out$tw_imie),'',as.character(out$tw_imie))
out$pracownik <- ifelse(is.na(out$pracownik),'',as.character(out$pracownik))
out$za_adnotacje <- ifelse(is.na(out$za_adnotacje),'',as.character(out$za_adnotacje))
out$BN_URL <- ifelse(is.na(out$BN_URL),'',as.character(out$BN_URL))
out %$%
{ rekord_BN==lag(rekord_BN,) & rz_nazwa==lag(rz_nazwa,) & za_ro_rok==lag(za_ro_rok,) & za_type==lag(za_type,) & rz_rodzaj_id==lag(rz_rodzaj_id,) & DZ_NAZWA==lag(DZ_NAZWA,) & DZ_DZIAL_ID==lag(DZ_DZIAL_ID,) & tw_tworca_id==lag(tw_tworca_id,) & za_tytul==lag(za_tytul,) & za_tytul_oryginalu==lag(za_tytul_oryginalu,) & za_jezyk_oryginalu==lag(za_jezyk_oryginalu,) & za_opis_wspoltworcow==lag(za_opis_wspoltworcow,) & za_wydanie==lag(za_wydanie,) & za_tomy==lag(za_tomy,) & za_instytucja==lag(za_instytucja,) & za_rok_wydania==lag(za_rok_wydania,) & za_opis_fizyczny_ksiazki==lag(za_opis_fizyczny_ksiazki,) & za_seria_wydawnicza==lag(za_seria_wydawnicza,) & tw_nazwisko==lag(tw_nazwisko,) & tw_imie==lag(tw_imie,) & pracownik==lag(pracownik,) & za_adnotacje==lag(za_adnotacje,) & BN_URL==lag(BN_URL,)} %>%
as.numeric() %>%
{.} -> out$same
out$same[1] <- 0
out$dzielone <- paste(out$am_autor_id,out$am_nazwisko,out$am_imie,out$os_osoba_id,out$os_nazwisko,out$os_imie,out$fo_symbol,out$wy_wydawnictwo_id,out$wy_miejsce,out$wy_nazwa,sep = "")
out <- out %>%
filter(!(same==1&dzielone=="")) %>%
select(1:33)
out %$%
{ rekord_BN==lag(rekord_BN,) & rz_nazwa==lag(rz_nazwa,) & za_ro_rok==lag(za_ro_rok,) & za_type==lag(za_type,) & rz_rodzaj_id==lag(rz_rodzaj_id,) & DZ_NAZWA==lag(DZ_NAZWA,) & DZ_DZIAL_ID==lag(DZ_DZIAL_ID,) & tw_tworca_id==lag(tw_tworca_id,) & za_tytul==lag(za_tytul,) & za_tytul_oryginalu==lag(za_tytul_oryginalu,) & za_jezyk_oryginalu==lag(za_jezyk_oryginalu,) & za_opis_wspoltworcow==lag(za_opis_wspoltworcow,) & za_wydanie==lag(za_wydanie,) & za_tomy==lag(za_tomy,) & za_instytucja==lag(za_instytucja,) & za_rok_wydania==lag(za_rok_wydania,) & za_opis_fizyczny_ksiazki==lag(za_opis_fizyczny_ksiazki,) & za_seria_wydawnicza==lag(za_seria_wydawnicza,) & tw_nazwisko==lag(tw_nazwisko,) & tw_imie==lag(tw_imie,) & pracownik==lag(pracownik,) & za_adnotacje==lag(za_adnotacje,) & BN_URL==lag(BN_URL,)} %>%
as.numeric() %>%
{.} -> out$same
#ucięcie zbyt długich ciągów znaków, by weszły do oracle'a
dlugosci <- data.frame(pole = c("am_nazwisko", "am_imie", "za_tytul", "za_tytul_oryginalu", "za_jezyk_oryginalu", "os_nazwisko", "os_imie", "za_opis_wspoltworcow", "za_instytucja", "wy_miejsce", "wy_nazwa", "za_opis_fizyczny_ksiazki", "za_seria_wydawnicza", "tw_nazwisko", "tw_imie", "za_adnotacje"), liczba_znakow = c(50,40,500,500,100,50,40,500,255,40,255,1000,255,200,40,2000))
x <- match(dlugosci$pole,names(out))
for (i in x) {
progress(match(i,x), max.value = length(x))
dlugosc <- dlugosci$liczba_znakow[match(names(out[i]),dlugosci$pole)]
out$za_adnotacje <- ifelse(dlugosc<nchar(as.character(out[,i]))&out$za_adnotacje!="",paste(out$za_adnotacje,paste("UWAGA! Pole ",as.character(names(out[i]))," było zbyt długie i zostało przycięte. Zredaguj treść pola.",sep = ""),sep = "# "),
ifelse(dlugosc<nchar(as.character(out[,i]))&out$za_adnotacje=="",paste("UWAGA! Pole ",as.character(names(out[i]))," było zbyt długie i zostało przycięte. Zredaguj treść pola.",sep = ""),as.character(out$za_adnotacje)))
out[,i] <- ifelse(dlugosc<nchar(as.character(out[,i])),as.character(substr(out[,i],1,dlugosc)),as.character(out[,i]))
}
Progress: 1 on 16 Progress: 2 on 16 Progress: 3 on 16 Progress: 4 on 16 Progress: 5 on 16 Progress: 6 on 16 Progress: 7 on 16 Progress: 8 on 16 Progress: 9 on 16 Progress: 10 on 16 Progress: 11 on 16 Progress: 12 on 16 Progress: 13 on 16 Progress: 14 on 16 Progress: 15 on 16 Progress: 16 on 16
out$rekord_BN[out$same == 1] <- ""
out$rz_nazwa[out$same == 1] <- ""
out$za_ro_rok[out$same == 1] <- ""
out$za_type[out$same == 1] <- ""
out$rz_rodzaj_id[out$same == 1] <- ""
out$DZ_NAZWA[out$same == 1] <- ""
out$DZ_DZIAL_ID[out$same == 1] <- ""
out$tw_tworca_id[out$same == 1] <- ""
out$za_tytul[out$same == 1] <- ""
out$za_tytul_oryginalu[out$same == 1] <- ""
out$za_jezyk_oryginalu[out$same == 1] <- ""
out$za_opis_wspoltworcow[out$same == 1] <- ""
out$za_wydanie[out$same == 1] <- ""
out$za_tomy[out$same == 1] <- ""
out$za_instytucja[out$same == 1] <- ""
out$za_rok_wydania[out$same == 1] <- ""
out$za_opis_fizyczny_ksiazki[out$same == 1] <- ""
out$za_seria_wydawnicza[out$same == 1] <- ""
out$tw_nazwisko[out$same == 1] <- ""
out$tw_imie[out$same == 1] <- ""
out$pracownik[out$same == 1] <- ""
out$za_adnotacje[out$same == 1] <- ""
out$BN_URL[out$same == 1] <- ""
#przypisanie do automatycznego OK redaktora "automat"
out <- out %>%
mutate(pracownik = ifelse(rekord_BN %in% automatyczny_IOK$rekord_BN,"AUTOMAT",as.character(pracownik))) %>%
select(1:33)
#pętla zapisująca po ok. 2000 wierszy z uwzględnieniem kompletności rekordów bibliograficznych rozpisanych na kilka wierszy
out <- out %>%
mutate(podzial = ifelse(rekord_BN!="",as.character(rekord_BN),NA)) %>%
fill(podzial)
ile <- unique(out$podzial)
ile <- split(unique(ile), ceiling(seq_along(unique(ile))/1500))
x <- 1:length(ile)
for (i in x) {
progress(match(i,x), max.value = length(x))
final <- out %>%
filter(podzial %in% ile[[i]]) %>%
select(-podzial)
write.xlsx(final, paste("C:/Users/",employee_name,"/Desktop/",import_year,"_podmiotowa_do_importu",i,".xlsx",sep = ""),sheetName = "gotowe")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
bn_ok <- chunk11
data <- bn_ok %>%
filter(rodzaj_ksiazki=="przedmiotowa") %>%
mutate(redaktor_dzialu = paste(redaktor_dzialu,"_przedm",sep = ""))
#uwolnienie kolumn z danymi z bn i przetworzenie do PBL
#1: za_uwagi, rz_nazwa, za_ro_rok, za_type, rz_rodzaj_id, tw_tworca_id, tw_nazwisko, tw_imie, dz_dzial_id, dz_nazwa, redaktor_dzialu
pola_pbl <- data %>%
select(ZA_UWAGI, RZ_NAZWA, ZA_RO_ROK = rok, RZ_RODZAJ_ID, TW_TWORCA_ID, TW_NAZWISKO, TW_IMIE, DZ_DZIAL_ID, DZ_NAZWA, redaktor_dzialu) %>%
mutate(ZA_TYPE = "KS")
#2: autor
BN_autor <- data %>%
select(X100,X245,ZA_UWAGI)
#pole 100
marc_field_100 <- BN_autor %>%
select(ZA_UWAGI,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(BN_autor$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
#pole 245
marc_field_245 <- BN_autor %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(BN_autor$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
BN_autor <- marc_field_100 %>%
select(ZA_UWAGI,`$a`,`$b`) %>%
unique() %>%
mutate(`$a` = ifelse(!is.na(`$b`),paste(`$a`,`$b`,sep = " "),as.character(`$a`))) %>%
mutate(`$a` = str_remove(`$a`,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)")) %>%
unique() %>%
mutate(AM_NAZWISKO = ifelse(grepl("\\|",`$a`), str_replace_all(str_remove_all(`$a`,","),"\\|",", "),
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\1"),as.character(`$a`))),
AM_IMIE = ifelse(grepl("\\|",`$a`),"*",
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\3"),"*"))) %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE) %>%
left_join(.,marc_field_245,by="ZA_UWAGI") %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE, X245c = `$c`)
x <- 1:lengths(BN_autor[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
BN_autor$czy_nazwisko[i] <- grepl(BN_autor$AM_NAZWISKO[i],BN_autor$X245c[i])
BN_autor$czy_imie[i] <- grepl(BN_autor$AM_IMIE[i],BN_autor$X245c[i])
}
Progress: 1 on 1469 Progress: 2 on 1469 Progress: 3 on 1469 Progress: 4 on 1469 Progress: 5 on 1469 Progress: 6 on 1469 Progress: 7 on 1469 Progress: 8 on 1469 Progress: 9 on 1469 Progress: 10 on 1469 Progress: 11 on 1469 Progress: 12 on 1469 Progress: 13 on 1469 Progress: 14 on 1469 Progress: 15 on 1469 Progress: 16 on 1469 Progress: 17 on 1469 Progress: 18 on 1469 Progress: 19 on 1469 Progress: 20 on 1469 Progress: 21 on 1469 Progress: 22 on 1469 Progress: 23 on 1469 Progress: 24 on 1469 Progress: 25 on 1469 Progress: 26 on 1469 Progress: 27 on 1469 Progress: 28 on 1469 Progress: 29 on 1469 Progress: 30 on 1469 Progress: 31 on 1469 Progress: 32 on 1469 Progress: 33 on 1469 Progress: 34 on 1469 Progress: 35 on 1469 Progress: 36 on 1469 Progress: 37 on 1469 Progress: 38 on 1469 Progress: 39 on 1469 Progress: 40 on 1469 Progress: 41 on 1469 Progress: 42 on 1469 Progress: 43 on 1469 Progress: 44 on 1469 Progress: 45 on 1469 Progress: 46 on 1469 Progress: 47 on 1469 Progress: 48 on 1469 Progress: 49 on 1469 Progress: 50 on 1469 Progress: 51 on 1469 Progress: 52 on 1469 Progress: 53 on 1469 Progress: 54 on 1469 Progress: 55 on 1469 Progress: 56 on 1469 Progress: 57 on 1469 Progress: 58 on 1469 Progress: 59 on 1469 Progress: 60 on 1469 Progress: 61 on 1469 Progress: 62 on 1469 Progress: 63 on 1469 Progress: 64 on 1469 Progress: 65 on 1469 Progress: 66 on 1469 Progress: 67 on 1469 Progress: 68 on 1469 Progress: 69 on 1469 Progress: 70 on 1469 Progress: 71 on 1469 Progress: 72 on 1469 Progress: 73 on 1469 Progress: 74 on 1469 Progress: 75 on 1469 Progress: 76 on 1469 Progress: 77 on 1469 Progress: 78 on 1469 Progress: 79 on 1469 Progress: 80 on 1469 Progress: 81 on 1469 Progress: 82 on 1469 Progress: 83 on 1469 Progress: 84 on 1469 Progress: 85 on 1469 Progress: 86 on 1469 Progress: 87 on 1469 Progress: 88 on 1469 Progress: 89 on 1469 Progress: 90 on 1469 Progress: 91 on 1469 Progress: 92 on 1469 Progress: 93 on 1469 Progress: 94 on 1469 Progress: 95 on 1469 Progress: 96 on 1469 Progress: 97 on 1469 Progress: 98 on 1469 Progress: 99 on 1469 Progress: 100 on 1469 Progress: 101 on 1469 Progress: 102 on 1469 Progress: 103 on 1469 Progress: 104 on 1469 Progress: 105 on 1469 Progress: 106 on 1469 Progress: 107 on 1469 Progress: 108 on 1469 Progress: 109 on 1469 Progress: 110 on 1469 Progress: 111 on 1469 Progress: 112 on 1469 Progress: 113 on 1469 Progress: 114 on 1469 Progress: 115 on 1469 Progress: 116 on 1469 Progress: 117 on 1469 Progress: 118 on 1469 Progress: 119 on 1469 Progress: 120 on 1469 Progress: 121 on 1469 Progress: 122 on 1469 Progress: 123 on 1469 Progress: 124 on 1469 Progress: 125 on 1469 Progress: 126 on 1469 Progress: 127 on 1469 Progress: 128 on 1469 Progress: 129 on 1469 Progress: 130 on 1469 Progress: 131 on 1469 Progress: 132 on 1469 Progress: 133 on 1469 Progress: 134 on 1469 Progress: 135 on 1469 Progress: 136 on 1469 Progress: 137 on 1469 Progress: 138 on 1469 Progress: 139 on 1469 Progress: 140 on 1469 Progress: 141 on 1469 Progress: 142 on 1469 Progress: 143 on 1469 Progress: 144 on 1469 Progress: 145 on 1469 Progress: 146 on 1469 Progress: 147 on 1469 Progress: 148 on 1469 Progress: 149 on 1469 Progress: 150 on 1469 Progress: 151 on 1469 Progress: 152 on 1469 Progress: 153 on 1469 Progress: 154 on 1469 Progress: 155 on 1469 Progress: 156 on 1469 Progress: 157 on 1469 Progress: 158 on 1469 Progress: 159 on 1469 Progress: 160 on 1469 Progress: 161 on 1469 Progress: 162 on 1469 Progress: 163 on 1469 Progress: 164 on 1469 Progress: 165 on 1469 Progress: 166 on 1469 Progress: 167 on 1469 Progress: 168 on 1469 Progress: 169 on 1469 Progress: 170 on 1469 Progress: 171 on 1469 Progress: 172 on 1469 Progress: 173 on 1469 Progress: 174 on 1469 Progress: 175 on 1469 Progress: 176 on 1469 Progress: 177 on 1469 Progress: 178 on 1469 Progress: 179 on 1469 Progress: 180 on 1469 Progress: 181 on 1469 Progress: 182 on 1469 Progress: 183 on 1469 Progress: 184 on 1469 Progress: 185 on 1469 Progress: 186 on 1469 Progress: 187 on 1469 Progress: 188 on 1469 Progress: 189 on 1469 Progress: 190 on 1469 Progress: 191 on 1469 Progress: 192 on 1469 Progress: 193 on 1469 Progress: 194 on 1469 Progress: 195 on 1469 Progress: 196 on 1469 Progress: 197 on 1469 Progress: 198 on 1469 Progress: 199 on 1469 Progress: 200 on 1469 Progress: 201 on 1469 Progress: 202 on 1469 Progress: 203 on 1469 Progress: 204 on 1469 Progress: 205 on 1469 Progress: 206 on 1469 Progress: 207 on 1469 Progress: 208 on 1469 Progress: 209 on 1469 Progress: 210 on 1469 Progress: 211 on 1469 Progress: 212 on 1469 Progress: 213 on 1469 Progress: 214 on 1469 Progress: 215 on 1469 Progress: 216 on 1469 Progress: 217 on 1469 Progress: 218 on 1469 Progress: 219 on 1469 Progress: 220 on 1469 Progress: 221 on 1469 Progress: 222 on 1469 Progress: 223 on 1469 Progress: 224 on 1469 Progress: 225 on 1469 Progress: 226 on 1469 Progress: 227 on 1469 Progress: 228 on 1469 Progress: 229 on 1469 Progress: 230 on 1469 Progress: 231 on 1469 Progress: 232 on 1469 Progress: 233 on 1469 Progress: 234 on 1469 Progress: 235 on 1469 Progress: 236 on 1469 Progress: 237 on 1469 Progress: 238 on 1469 Progress: 239 on 1469 Progress: 240 on 1469 Progress: 241 on 1469 Progress: 242 on 1469 Progress: 243 on 1469 Progress: 244 on 1469 Progress: 245 on 1469 Progress: 246 on 1469 Progress: 247 on 1469 Progress: 248 on 1469 Progress: 249 on 1469 Progress: 250 on 1469 Progress: 251 on 1469 Progress: 252 on 1469 Progress: 253 on 1469 Progress: 254 on 1469 Progress: 255 on 1469 Progress: 256 on 1469 Progress: 257 on 1469 Progress: 258 on 1469 Progress: 259 on 1469 Progress: 260 on 1469 Progress: 261 on 1469 Progress: 262 on 1469 Progress: 263 on 1469 Progress: 264 on 1469 Progress: 265 on 1469 Progress: 266 on 1469 Progress: 267 on 1469 Progress: 268 on 1469 Progress: 269 on 1469 Progress: 270 on 1469 Progress: 271 on 1469 Progress: 272 on 1469 Progress: 273 on 1469 Progress: 274 on 1469 Progress: 275 on 1469 Progress: 276 on 1469 Progress: 277 on 1469 Progress: 278 on 1469 Progress: 279 on 1469 Progress: 280 on 1469 Progress: 281 on 1469 Progress: 282 on 1469 Progress: 283 on 1469 Progress: 284 on 1469 Progress: 285 on 1469 Progress: 286 on 1469 Progress: 287 on 1469 Progress: 288 on 1469 Progress: 289 on 1469 Progress: 290 on 1469 Progress: 291 on 1469 Progress: 292 on 1469 Progress: 293 on 1469 Progress: 294 on 1469 Progress: 295 on 1469 Progress: 296 on 1469 Progress: 297 on 1469 Progress: 298 on 1469 Progress: 299 on 1469 Progress: 300 on 1469 Progress: 301 on 1469 Progress: 302 on 1469 Progress: 303 on 1469 Progress: 304 on 1469 Progress: 305 on 1469 Progress: 306 on 1469 Progress: 307 on 1469 Progress: 308 on 1469 Progress: 309 on 1469 Progress: 310 on 1469 Progress: 311 on 1469 Progress: 312 on 1469 Progress: 313 on 1469 Progress: 314 on 1469 Progress: 315 on 1469 Progress: 316 on 1469 Progress: 317 on 1469 Progress: 318 on 1469 Progress: 319 on 1469 Progress: 320 on 1469 Progress: 321 on 1469 Progress: 322 on 1469 Progress: 323 on 1469 Progress: 324 on 1469 Progress: 325 on 1469 Progress: 326 on 1469 Progress: 327 on 1469 Progress: 328 on 1469 Progress: 329 on 1469 Progress: 330 on 1469 Progress: 331 on 1469 Progress: 332 on 1469 Progress: 333 on 1469 Progress: 334 on 1469 Progress: 335 on 1469 Progress: 336 on 1469 Progress: 337 on 1469 Progress: 338 on 1469 Progress: 339 on 1469 Progress: 340 on 1469 Progress: 341 on 1469 Progress: 342 on 1469 Progress: 343 on 1469 Progress: 344 on 1469 Progress: 345 on 1469 Progress: 346 on 1469 Progress: 347 on 1469 Progress: 348 on 1469 Progress: 349 on 1469 Progress: 350 on 1469 Progress: 351 on 1469 Progress: 352 on 1469 Progress: 353 on 1469 Progress: 354 on 1469 Progress: 355 on 1469 Progress: 356 on 1469 Progress: 357 on 1469 Progress: 358 on 1469 Progress: 359 on 1469 Progress: 360 on 1469 Progress: 361 on 1469 Progress: 362 on 1469 Progress: 363 on 1469 Progress: 364 on 1469 Progress: 365 on 1469 Progress: 366 on 1469 Progress: 367 on 1469 Progress: 368 on 1469 Progress: 369 on 1469 Progress: 370 on 1469 Progress: 371 on 1469 Progress: 372 on 1469 Progress: 373 on 1469 Progress: 374 on 1469 Progress: 375 on 1469 Progress: 376 on 1469 Progress: 377 on 1469 Progress: 378 on 1469 Progress: 379 on 1469 Progress: 380 on 1469 Progress: 381 on 1469 Progress: 382 on 1469 Progress: 383 on 1469 Progress: 384 on 1469 Progress: 385 on 1469 Progress: 386 on 1469 Progress: 387 on 1469 Progress: 388 on 1469 Progress: 389 on 1469 Progress: 390 on 1469 Progress: 391 on 1469 Progress: 392 on 1469 Progress: 393 on 1469 Progress: 394 on 1469 Progress: 395 on 1469 Progress: 396 on 1469 Progress: 397 on 1469 Progress: 398 on 1469 Progress: 399 on 1469 Progress: 400 on 1469 Progress: 401 on 1469 Progress: 402 on 1469 Progress: 403 on 1469 Progress: 404 on 1469 Progress: 405 on 1469 Progress: 406 on 1469 Progress: 407 on 1469 Progress: 408 on 1469 Progress: 409 on 1469 Progress: 410 on 1469 Progress: 411 on 1469 Progress: 412 on 1469 Progress: 413 on 1469 Progress: 414 on 1469 Progress: 415 on 1469 Progress: 416 on 1469 Progress: 417 on 1469 Progress: 418 on 1469 Progress: 419 on 1469 Progress: 420 on 1469 Progress: 421 on 1469 Progress: 422 on 1469 Progress: 423 on 1469 Progress: 424 on 1469 Progress: 425 on 1469 Progress: 426 on 1469 Progress: 427 on 1469 Progress: 428 on 1469 Progress: 429 on 1469 Progress: 430 on 1469 Progress: 431 on 1469 Progress: 432 on 1469 Progress: 433 on 1469 Progress: 434 on 1469 Progress: 435 on 1469 Progress: 436 on 1469 Progress: 437 on 1469 Progress: 438 on 1469 Progress: 439 on 1469 Progress: 440 on 1469 Progress: 441 on 1469 Progress: 442 on 1469 Progress: 443 on 1469 Progress: 444 on 1469 Progress: 445 on 1469 Progress: 446 on 1469 Progress: 447 on 1469 Progress: 448 on 1469 Progress: 449 on 1469 Progress: 450 on 1469 Progress: 451 on 1469 Progress: 452 on 1469 Progress: 453 on 1469 Progress: 454 on 1469 Progress: 455 on 1469 Progress: 456 on 1469 Progress: 457 on 1469 Progress: 458 on 1469 Progress: 459 on 1469 Progress: 460 on 1469 Progress: 461 on 1469 Progress: 462 on 1469 Progress: 463 on 1469 Progress: 464 on 1469 Progress: 465 on 1469 Progress: 466 on 1469 Progress: 467 on 1469 Progress: 468 on 1469 Progress: 469 on 1469 Progress: 470 on 1469 Progress: 471 on 1469 Progress: 472 on 1469 Progress: 473 on 1469 Progress: 474 on 1469 Progress: 475 on 1469 Progress: 476 on 1469 Progress: 477 on 1469 Progress: 478 on 1469 Progress: 479 on 1469 Progress: 480 on 1469 Progress: 481 on 1469 Progress: 482 on 1469 Progress: 483 on 1469 Progress: 484 on 1469 Progress: 485 on 1469 Progress: 486 on 1469 Progress: 487 on 1469 Progress: 488 on 1469 Progress: 489 on 1469 Progress: 490 on 1469 Progress: 491 on 1469 Progress: 492 on 1469 Progress: 493 on 1469 Progress: 494 on 1469 Progress: 495 on 1469 Progress: 496 on 1469 Progress: 497 on 1469 Progress: 498 on 1469 Progress: 499 on 1469 Progress: 500 on 1469 Progress: 501 on 1469 Progress: 502 on 1469 Progress: 503 on 1469 Progress: 504 on 1469 Progress: 505 on 1469 Progress: 506 on 1469 Progress: 507 on 1469 Progress: 508 on 1469 Progress: 509 on 1469 Progress: 510 on 1469 Progress: 511 on 1469 Progress: 512 on 1469 Progress: 513 on 1469 Progress: 514 on 1469 Progress: 515 on 1469 Progress: 516 on 1469 Progress: 517 on 1469 Progress: 518 on 1469 Progress: 519 on 1469 Progress: 520 on 1469 Progress: 521 on 1469 Progress: 522 on 1469 Progress: 523 on 1469 Progress: 524 on 1469 Progress: 525 on 1469 Progress: 526 on 1469 Progress: 527 on 1469 Progress: 528 on 1469 Progress: 529 on 1469 Progress: 530 on 1469 Progress: 531 on 1469 Progress: 532 on 1469 Progress: 533 on 1469 Progress: 534 on 1469 Progress: 535 on 1469 Progress: 536 on 1469 Progress: 537 on 1469 Progress: 538 on 1469 Progress: 539 on 1469 Progress: 540 on 1469 Progress: 541 on 1469 Progress: 542 on 1469 Progress: 543 on 1469 Progress: 544 on 1469 Progress: 545 on 1469 Progress: 546 on 1469 Progress: 547 on 1469 Progress: 548 on 1469 Progress: 549 on 1469 Progress: 550 on 1469 Progress: 551 on 1469 Progress: 552 on 1469 Progress: 553 on 1469 Progress: 554 on 1469 Progress: 555 on 1469 Progress: 556 on 1469 Progress: 557 on 1469 Progress: 558 on 1469 Progress: 559 on 1469 Progress: 560 on 1469 Progress: 561 on 1469 Progress: 562 on 1469 Progress: 563 on 1469 Progress: 564 on 1469 Progress: 565 on 1469 Progress: 566 on 1469 Progress: 567 on 1469 Progress: 568 on 1469 Progress: 569 on 1469 Progress: 570 on 1469 Progress: 571 on 1469 Progress: 572 on 1469 Progress: 573 on 1469 Progress: 574 on 1469 Progress: 575 on 1469 Progress: 576 on 1469 Progress: 577 on 1469 Progress: 578 on 1469 Progress: 579 on 1469 Progress: 580 on 1469 Progress: 581 on 1469 Progress: 582 on 1469 Progress: 583 on 1469 Progress: 584 on 1469 Progress: 585 on 1469 Progress: 586 on 1469 Progress: 587 on 1469 Progress: 588 on 1469 Progress: 589 on 1469 Progress: 590 on 1469 Progress: 591 on 1469 Progress: 592 on 1469 Progress: 593 on 1469 Progress: 594 on 1469 Progress: 595 on 1469 Progress: 596 on 1469 Progress: 597 on 1469 Progress: 598 on 1469 Progress: 599 on 1469 Progress: 600 on 1469 Progress: 601 on 1469 Progress: 602 on 1469 Progress: 603 on 1469 Progress: 604 on 1469 Progress: 605 on 1469 Progress: 606 on 1469 Progress: 607 on 1469 Progress: 608 on 1469 Progress: 609 on 1469 Progress: 610 on 1469 Progress: 611 on 1469 Progress: 612 on 1469 Progress: 613 on 1469 Progress: 614 on 1469 Progress: 615 on 1469 Progress: 616 on 1469 Progress: 617 on 1469 Progress: 618 on 1469 Progress: 619 on 1469 Progress: 620 on 1469 Progress: 621 on 1469 Progress: 622 on 1469 Progress: 623 on 1469 Progress: 624 on 1469 Progress: 625 on 1469 Progress: 626 on 1469 Progress: 627 on 1469 Progress: 628 on 1469 Progress: 629 on 1469 Progress: 630 on 1469 Progress: 631 on 1469 Progress: 632 on 1469 Progress: 633 on 1469 Progress: 634 on 1469 Progress: 635 on 1469 Progress: 636 on 1469 Progress: 637 on 1469 Progress: 638 on 1469 Progress: 639 on 1469 Progress: 640 on 1469 Progress: 641 on 1469 Progress: 642 on 1469 Progress: 643 on 1469 Progress: 644 on 1469 Progress: 645 on 1469 Progress: 646 on 1469 Progress: 647 on 1469 Progress: 648 on 1469 Progress: 649 on 1469 Progress: 650 on 1469 Progress: 651 on 1469 Progress: 652 on 1469 Progress: 653 on 1469 Progress: 654 on 1469 Progress: 655 on 1469 Progress: 656 on 1469 Progress: 657 on 1469 Progress: 658 on 1469 Progress: 659 on 1469 Progress: 660 on 1469 Progress: 661 on 1469 Progress: 662 on 1469 Progress: 663 on 1469 Progress: 664 on 1469 Progress: 665 on 1469 Progress: 666 on 1469 Progress: 667 on 1469 Progress: 668 on 1469 Progress: 669 on 1469 Progress: 670 on 1469 Progress: 671 on 1469 Progress: 672 on 1469 Progress: 673 on 1469 Progress: 674 on 1469 Progress: 675 on 1469 Progress: 676 on 1469 Progress: 677 on 1469 Progress: 678 on 1469 Progress: 679 on 1469 Progress: 680 on 1469 Progress: 681 on 1469 Progress: 682 on 1469 Progress: 683 on 1469 Progress: 684 on 1469 Progress: 685 on 1469 Progress: 686 on 1469 Progress: 687 on 1469 Progress: 688 on 1469 Progress: 689 on 1469 Progress: 690 on 1469 Progress: 691 on 1469 Progress: 692 on 1469 Progress: 693 on 1469 Progress: 694 on 1469 Progress: 695 on 1469 Progress: 696 on 1469 Progress: 697 on 1469 Progress: 698 on 1469 Progress: 699 on 1469 Progress: 700 on 1469 Progress: 701 on 1469 Progress: 702 on 1469 Progress: 703 on 1469 Progress: 704 on 1469 Progress: 705 on 1469 Progress: 706 on 1469 Progress: 707 on 1469 Progress: 708 on 1469 Progress: 709 on 1469 Progress: 710 on 1469 Progress: 711 on 1469 Progress: 712 on 1469 Progress: 713 on 1469 Progress: 714 on 1469 Progress: 715 on 1469 Progress: 716 on 1469 Progress: 717 on 1469 Progress: 718 on 1469 Progress: 719 on 1469 Progress: 720 on 1469 Progress: 721 on 1469 Progress: 722 on 1469 Progress: 723 on 1469 Progress: 724 on 1469 Progress: 725 on 1469 Progress: 726 on 1469 Progress: 727 on 1469 Progress: 728 on 1469 Progress: 729 on 1469 Progress: 730 on 1469 Progress: 731 on 1469 Progress: 732 on 1469 Progress: 733 on 1469 Progress: 734 on 1469 Progress: 735 on 1469 Progress: 736 on 1469 Progress: 737 on 1469 Progress: 738 on 1469 Progress: 739 on 1469 Progress: 740 on 1469 Progress: 741 on 1469 Progress: 742 on 1469 Progress: 743 on 1469 Progress: 744 on 1469 Progress: 745 on 1469 Progress: 746 on 1469 Progress: 747 on 1469 Progress: 748 on 1469 Progress: 749 on 1469 Progress: 750 on 1469 Progress: 751 on 1469 Progress: 752 on 1469 Progress: 753 on 1469 Progress: 754 on 1469 Progress: 755 on 1469 Progress: 756 on 1469 Progress: 757 on 1469 Progress: 758 on 1469 Progress: 759 on 1469 Progress: 760 on 1469 Progress: 761 on 1469 Progress: 762 on 1469 Progress: 763 on 1469 Progress: 764 on 1469 Progress: 765 on 1469 Progress: 766 on 1469 Progress: 767 on 1469 Progress: 768 on 1469 Progress: 769 on 1469 Progress: 770 on 1469 Progress: 771 on 1469 Progress: 772 on 1469 Progress: 773 on 1469 Progress: 774 on 1469 Progress: 775 on 1469 Progress: 776 on 1469 Progress: 777 on 1469 Progress: 778 on 1469 Progress: 779 on 1469 Progress: 780 on 1469 Progress: 781 on 1469 Progress: 782 on 1469 Progress: 783 on 1469 Progress: 784 on 1469 Progress: 785 on 1469 Progress: 786 on 1469 Progress: 787 on 1469 Progress: 788 on 1469 Progress: 789 on 1469 Progress: 790 on 1469 Progress: 791 on 1469 Progress: 792 on 1469 Progress: 793 on 1469 Progress: 794 on 1469 Progress: 795 on 1469 Progress: 796 on 1469 Progress: 797 on 1469 Progress: 798 on 1469 Progress: 799 on 1469 Progress: 800 on 1469 Progress: 801 on 1469 Progress: 802 on 1469 Progress: 803 on 1469 Progress: 804 on 1469 Progress: 805 on 1469 Progress: 806 on 1469 Progress: 807 on 1469 Progress: 808 on 1469 Progress: 809 on 1469 Progress: 810 on 1469 Progress: 811 on 1469 Progress: 812 on 1469 Progress: 813 on 1469 Progress: 814 on 1469 Progress: 815 on 1469 Progress: 816 on 1469 Progress: 817 on 1469 Progress: 818 on 1469 Progress: 819 on 1469 Progress: 820 on 1469 Progress: 821 on 1469 Progress: 822 on 1469 Progress: 823 on 1469 Progress: 824 on 1469 Progress: 825 on 1469 Progress: 826 on 1469 Progress: 827 on 1469 Progress: 828 on 1469 Progress: 829 on 1469 Progress: 830 on 1469 Progress: 831 on 1469 Progress: 832 on 1469 Progress: 833 on 1469 Progress: 834 on 1469 Progress: 835 on 1469 Progress: 836 on 1469 Progress: 837 on 1469 Progress: 838 on 1469 Progress: 839 on 1469 Progress: 840 on 1469 Progress: 841 on 1469 Progress: 842 on 1469 Progress: 843 on 1469 Progress: 844 on 1469 Progress: 845 on 1469 Progress: 846 on 1469 Progress: 847 on 1469 Progress: 848 on 1469 Progress: 849 on 1469 Progress: 850 on 1469 Progress: 851 on 1469 Progress: 852 on 1469 Progress: 853 on 1469 Progress: 854 on 1469 Progress: 855 on 1469 Progress: 856 on 1469 Progress: 857 on 1469 Progress: 858 on 1469 Progress: 859 on 1469 Progress: 860 on 1469 Progress: 861 on 1469 Progress: 862 on 1469 Progress: 863 on 1469 Progress: 864 on 1469 Progress: 865 on 1469 Progress: 866 on 1469 Progress: 867 on 1469 Progress: 868 on 1469 Progress: 869 on 1469 Progress: 870 on 1469 Progress: 871 on 1469 Progress: 872 on 1469 Progress: 873 on 1469 Progress: 874 on 1469 Progress: 875 on 1469 Progress: 876 on 1469 Progress: 877 on 1469 Progress: 878 on 1469 Progress: 879 on 1469 Progress: 880 on 1469 Progress: 881 on 1469 Progress: 882 on 1469 Progress: 883 on 1469 Progress: 884 on 1469 Progress: 885 on 1469 Progress: 886 on 1469 Progress: 887 on 1469 Progress: 888 on 1469 Progress: 889 on 1469 Progress: 890 on 1469 Progress: 891 on 1469 Progress: 892 on 1469 Progress: 893 on 1469 Progress: 894 on 1469 Progress: 895 on 1469 Progress: 896 on 1469 Progress: 897 on 1469 Progress: 898 on 1469 Progress: 899 on 1469 Progress: 900 on 1469 Progress: 901 on 1469 Progress: 902 on 1469 Progress: 903 on 1469 Progress: 904 on 1469 Progress: 905 on 1469 Progress: 906 on 1469 Progress: 907 on 1469 Progress: 908 on 1469 Progress: 909 on 1469 Progress: 910 on 1469 Progress: 911 on 1469 Progress: 912 on 1469 Progress: 913 on 1469 Progress: 914 on 1469 Progress: 915 on 1469 Progress: 916 on 1469 Progress: 917 on 1469 Progress: 918 on 1469 Progress: 919 on 1469 Progress: 920 on 1469 Progress: 921 on 1469 Progress: 922 on 1469 Progress: 923 on 1469 Progress: 924 on 1469 Progress: 925 on 1469 Progress: 926 on 1469 Progress: 927 on 1469 Progress: 928 on 1469 Progress: 929 on 1469 Progress: 930 on 1469 Progress: 931 on 1469 Progress: 932 on 1469 Progress: 933 on 1469 Progress: 934 on 1469 Progress: 935 on 1469 Progress: 936 on 1469 Progress: 937 on 1469 Progress: 938 on 1469 Progress: 939 on 1469 Progress: 940 on 1469 Progress: 941 on 1469 Progress: 942 on 1469 Progress: 943 on 1469 Progress: 944 on 1469 Progress: 945 on 1469 Progress: 946 on 1469 Progress: 947 on 1469 Progress: 948 on 1469 Progress: 949 on 1469 Progress: 950 on 1469 Progress: 951 on 1469 Progress: 952 on 1469 Progress: 953 on 1469 Progress: 954 on 1469 Progress: 955 on 1469 Progress: 956 on 1469 Progress: 957 on 1469 Progress: 958 on 1469 Progress: 959 on 1469 Progress: 960 on 1469 Progress: 961 on 1469 Progress: 962 on 1469 Progress: 963 on 1469 Progress: 964 on 1469 Progress: 965 on 1469 Progress: 966 on 1469 Progress: 967 on 1469 Progress: 968 on 1469 Progress: 969 on 1469 Progress: 970 on 1469 Progress: 971 on 1469 Progress: 972 on 1469 Progress: 973 on 1469 Progress: 974 on 1469 Progress: 975 on 1469 Progress: 976 on 1469 Progress: 977 on 1469 Progress: 978 on 1469 Progress: 979 on 1469 Progress: 980 on 1469 Progress: 981 on 1469 Progress: 982 on 1469 Progress: 983 on 1469 Progress: 984 on 1469 Progress: 985 on 1469 Progress: 986 on 1469 Progress: 987 on 1469 Progress: 988 on 1469 Progress: 989 on 1469 Progress: 990 on 1469 Progress: 991 on 1469 Progress: 992 on 1469 Progress: 993 on 1469 Progress: 994 on 1469 Progress: 995 on 1469 Progress: 996 on 1469 Progress: 997 on 1469 Progress: 998 on 1469 Progress: 999 on 1469 Progress: 1000 on 1469 Progress: 1001 on 1469 Progress: 1002 on 1469 Progress: 1003 on 1469 Progress: 1004 on 1469 Progress: 1005 on 1469 Progress: 1006 on 1469 Progress: 1007 on 1469 Progress: 1008 on 1469 Progress: 1009 on 1469 Progress: 1010 on 1469 Progress: 1011 on 1469 Progress: 1012 on 1469 Progress: 1013 on 1469 Progress: 1014 on 1469 Progress: 1015 on 1469 Progress: 1016 on 1469 Progress: 1017 on 1469 Progress: 1018 on 1469 Progress: 1019 on 1469 Progress: 1020 on 1469 Progress: 1021 on 1469 Progress: 1022 on 1469 Progress: 1023 on 1469 Progress: 1024 on 1469 Progress: 1025 on 1469 Progress: 1026 on 1469 Progress: 1027 on 1469 Progress: 1028 on 1469 Progress: 1029 on 1469 Progress: 1030 on 1469 Progress: 1031 on 1469 Progress: 1032 on 1469 Progress: 1033 on 1469 Progress: 1034 on 1469 Progress: 1035 on 1469 Progress: 1036 on 1469 Progress: 1037 on 1469 Progress: 1038 on 1469 Progress: 1039 on 1469 Progress: 1040 on 1469 Progress: 1041 on 1469 Progress: 1042 on 1469 Progress: 1043 on 1469 Progress: 1044 on 1469 Progress: 1045 on 1469 Progress: 1046 on 1469 Progress: 1047 on 1469 Progress: 1048 on 1469 Progress: 1049 on 1469 Progress: 1050 on 1469 Progress: 1051 on 1469 Progress: 1052 on 1469 Progress: 1053 on 1469 Progress: 1054 on 1469 Progress: 1055 on 1469 Progress: 1056 on 1469 Progress: 1057 on 1469 Progress: 1058 on 1469 Progress: 1059 on 1469 Progress: 1060 on 1469 Progress: 1061 on 1469 Progress: 1062 on 1469 Progress: 1063 on 1469 Progress: 1064 on 1469 Progress: 1065 on 1469 Progress: 1066 on 1469 Progress: 1067 on 1469 Progress: 1068 on 1469 Progress: 1069 on 1469 Progress: 1070 on 1469 Progress: 1071 on 1469 Progress: 1072 on 1469 Progress: 1073 on 1469 Progress: 1074 on 1469 Progress: 1075 on 1469 Progress: 1076 on 1469 Progress: 1077 on 1469 Progress: 1078 on 1469 Progress: 1079 on 1469 Progress: 1080 on 1469 Progress: 1081 on 1469 Progress: 1082 on 1469 Progress: 1083 on 1469 Progress: 1084 on 1469 Progress: 1085 on 1469 Progress: 1086 on 1469 Progress: 1087 on 1469 Progress: 1088 on 1469 Progress: 1089 on 1469 Progress: 1090 on 1469 Progress: 1091 on 1469 Progress: 1092 on 1469 Progress: 1093 on 1469 Progress: 1094 on 1469 Progress: 1095 on 1469 Progress: 1096 on 1469 Progress: 1097 on 1469 Progress: 1098 on 1469 Progress: 1099 on 1469 Progress: 1100 on 1469 Progress: 1101 on 1469 Progress: 1102 on 1469 Progress: 1103 on 1469 Progress: 1104 on 1469 Progress: 1105 on 1469 Progress: 1106 on 1469 Progress: 1107 on 1469 Progress: 1108 on 1469 Progress: 1109 on 1469 Progress: 1110 on 1469 Progress: 1111 on 1469 Progress: 1112 on 1469 Progress: 1113 on 1469 Progress: 1114 on 1469 Progress: 1115 on 1469 Progress: 1116 on 1469 Progress: 1117 on 1469 Progress: 1118 on 1469 Progress: 1119 on 1469 Progress: 1120 on 1469 Progress: 1121 on 1469 Progress: 1122 on 1469 Progress: 1123 on 1469 Progress: 1124 on 1469 Progress: 1125 on 1469 Progress: 1126 on 1469 Progress: 1127 on 1469 Progress: 1128 on 1469 Progress: 1129 on 1469 Progress: 1130 on 1469 Progress: 1131 on 1469 Progress: 1132 on 1469 Progress: 1133 on 1469 Progress: 1134 on 1469 Progress: 1135 on 1469 Progress: 1136 on 1469 Progress: 1137 on 1469 Progress: 1138 on 1469 Progress: 1139 on 1469 Progress: 1140 on 1469 Progress: 1141 on 1469 Progress: 1142 on 1469 Progress: 1143 on 1469 Progress: 1144 on 1469 Progress: 1145 on 1469 Progress: 1146 on 1469 Progress: 1147 on 1469 Progress: 1148 on 1469 Progress: 1149 on 1469 Progress: 1150 on 1469 Progress: 1151 on 1469 Progress: 1152 on 1469 Progress: 1153 on 1469 Progress: 1154 on 1469 Progress: 1155 on 1469 Progress: 1156 on 1469 Progress: 1157 on 1469 Progress: 1158 on 1469 Progress: 1159 on 1469 Progress: 1160 on 1469 Progress: 1161 on 1469 Progress: 1162 on 1469 Progress: 1163 on 1469 Progress: 1164 on 1469 Progress: 1165 on 1469 Progress: 1166 on 1469 Progress: 1167 on 1469 Progress: 1168 on 1469 Progress: 1169 on 1469 Progress: 1170 on 1469 Progress: 1171 on 1469 Progress: 1172 on 1469 Progress: 1173 on 1469 Progress: 1174 on 1469 Progress: 1175 on 1469 Progress: 1176 on 1469 Progress: 1177 on 1469 Progress: 1178 on 1469 Progress: 1179 on 1469 Progress: 1180 on 1469 Progress: 1181 on 1469 Progress: 1182 on 1469 Progress: 1183 on 1469 Progress: 1184 on 1469 Progress: 1185 on 1469 Progress: 1186 on 1469 Progress: 1187 on 1469 Progress: 1188 on 1469 Progress: 1189 on 1469 Progress: 1190 on 1469 Progress: 1191 on 1469 Progress: 1192 on 1469 Progress: 1193 on 1469 Progress: 1194 on 1469 Progress: 1195 on 1469 Progress: 1196 on 1469 Progress: 1197 on 1469 Progress: 1198 on 1469 Progress: 1199 on 1469 Progress: 1200 on 1469 Progress: 1201 on 1469 Progress: 1202 on 1469 Progress: 1203 on 1469 Progress: 1204 on 1469 Progress: 1205 on 1469 Progress: 1206 on 1469 Progress: 1207 on 1469 Progress: 1208 on 1469 Progress: 1209 on 1469 Progress: 1210 on 1469 Progress: 1211 on 1469 Progress: 1212 on 1469 Progress: 1213 on 1469 Progress: 1214 on 1469 Progress: 1215 on 1469 Progress: 1216 on 1469 Progress: 1217 on 1469 Progress: 1218 on 1469 Progress: 1219 on 1469 Progress: 1220 on 1469 Progress: 1221 on 1469 Progress: 1222 on 1469 Progress: 1223 on 1469 Progress: 1224 on 1469 Progress: 1225 on 1469 Progress: 1226 on 1469 Progress: 1227 on 1469 Progress: 1228 on 1469 Progress: 1229 on 1469 Progress: 1230 on 1469 Progress: 1231 on 1469 Progress: 1232 on 1469 Progress: 1233 on 1469 Progress: 1234 on 1469 Progress: 1235 on 1469 Progress: 1236 on 1469 Progress: 1237 on 1469 Progress: 1238 on 1469 Progress: 1239 on 1469 Progress: 1240 on 1469 Progress: 1241 on 1469 Progress: 1242 on 1469 Progress: 1243 on 1469 Progress: 1244 on 1469 Progress: 1245 on 1469 Progress: 1246 on 1469 Progress: 1247 on 1469 Progress: 1248 on 1469 Progress: 1249 on 1469 Progress: 1250 on 1469 Progress: 1251 on 1469 Progress: 1252 on 1469 Progress: 1253 on 1469 Progress: 1254 on 1469 Progress: 1255 on 1469 Progress: 1256 on 1469 Progress: 1257 on 1469 Progress: 1258 on 1469 Progress: 1259 on 1469 Progress: 1260 on 1469 Progress: 1261 on 1469 Progress: 1262 on 1469 Progress: 1263 on 1469 Progress: 1264 on 1469 Progress: 1265 on 1469 Progress: 1266 on 1469 Progress: 1267 on 1469 Progress: 1268 on 1469 Progress: 1269 on 1469 Progress: 1270 on 1469 Progress: 1271 on 1469 Progress: 1272 on 1469 Progress: 1273 on 1469 Progress: 1274 on 1469 Progress: 1275 on 1469 Progress: 1276 on 1469 Progress: 1277 on 1469 Progress: 1278 on 1469 Progress: 1279 on 1469 Progress: 1280 on 1469 Progress: 1281 on 1469 Progress: 1282 on 1469 Progress: 1283 on 1469 Progress: 1284 on 1469 Progress: 1285 on 1469 Progress: 1286 on 1469 Progress: 1287 on 1469 Progress: 1288 on 1469 Progress: 1289 on 1469 Progress: 1290 on 1469 Progress: 1291 on 1469 Progress: 1292 on 1469 Progress: 1293 on 1469 Progress: 1294 on 1469 Progress: 1295 on 1469 Progress: 1296 on 1469 Progress: 1297 on 1469 Progress: 1298 on 1469 Progress: 1299 on 1469 Progress: 1300 on 1469 Progress: 1301 on 1469 Progress: 1302 on 1469 Progress: 1303 on 1469 Progress: 1304 on 1469 Progress: 1305 on 1469 Progress: 1306 on 1469 Progress: 1307 on 1469 Progress: 1308 on 1469 Progress: 1309 on 1469 Progress: 1310 on 1469 Progress: 1311 on 1469 Progress: 1312 on 1469 Progress: 1313 on 1469 Progress: 1314 on 1469 Progress: 1315 on 1469 Progress: 1316 on 1469 Progress: 1317 on 1469 Progress: 1318 on 1469 Progress: 1319 on 1469 Progress: 1320 on 1469 Progress: 1321 on 1469 Progress: 1322 on 1469 Progress: 1323 on 1469 Progress: 1324 on 1469 Progress: 1325 on 1469 Progress: 1326 on 1469 Progress: 1327 on 1469 Progress: 1328 on 1469 Progress: 1329 on 1469 Progress: 1330 on 1469 Progress: 1331 on 1469 Progress: 1332 on 1469 Progress: 1333 on 1469 Progress: 1334 on 1469 Progress: 1335 on 1469 Progress: 1336 on 1469 Progress: 1337 on 1469 Progress: 1338 on 1469 Progress: 1339 on 1469 Progress: 1340 on 1469 Progress: 1341 on 1469 Progress: 1342 on 1469 Progress: 1343 on 1469 Progress: 1344 on 1469 Progress: 1345 on 1469 Progress: 1346 on 1469 Progress: 1347 on 1469 Progress: 1348 on 1469 Progress: 1349 on 1469 Progress: 1350 on 1469 Progress: 1351 on 1469 Progress: 1352 on 1469 Progress: 1353 on 1469 Progress: 1354 on 1469 Progress: 1355 on 1469 Progress: 1356 on 1469 Progress: 1357 on 1469 Progress: 1358 on 1469 Progress: 1359 on 1469 Progress: 1360 on 1469 Progress: 1361 on 1469 Progress: 1362 on 1469 Progress: 1363 on 1469 Progress: 1364 on 1469 Progress: 1365 on 1469 Progress: 1366 on 1469 Progress: 1367 on 1469 Progress: 1368 on 1469 Progress: 1369 on 1469 Progress: 1370 on 1469 Progress: 1371 on 1469 Progress: 1372 on 1469 Progress: 1373 on 1469 Progress: 1374 on 1469 Progress: 1375 on 1469 Progress: 1376 on 1469 Progress: 1377 on 1469 Progress: 1378 on 1469 Progress: 1379 on 1469 Progress: 1380 on 1469 Progress: 1381 on 1469 Progress: 1382 on 1469 Progress: 1383 on 1469 Progress: 1384 on 1469 Progress: 1385 on 1469 Progress: 1386 on 1469 Progress: 1387 on 1469 Progress: 1388 on 1469 Progress: 1389 on 1469 Progress: 1390 on 1469 Progress: 1391 on 1469 Progress: 1392 on 1469 Progress: 1393 on 1469 Progress: 1394 on 1469 Progress: 1395 on 1469 Progress: 1396 on 1469 Progress: 1397 on 1469 Progress: 1398 on 1469 Progress: 1399 on 1469 Progress: 1400 on 1469 Progress: 1401 on 1469 Progress: 1402 on 1469 Progress: 1403 on 1469 Progress: 1404 on 1469 Progress: 1405 on 1469 Progress: 1406 on 1469 Progress: 1407 on 1469 Progress: 1408 on 1469 Progress: 1409 on 1469 Progress: 1410 on 1469 Progress: 1411 on 1469 Progress: 1412 on 1469 Progress: 1413 on 1469 Progress: 1414 on 1469 Progress: 1415 on 1469 Progress: 1416 on 1469 Progress: 1417 on 1469 Progress: 1418 on 1469 Progress: 1419 on 1469 Progress: 1420 on 1469 Progress: 1421 on 1469 Progress: 1422 on 1469 Progress: 1423 on 1469 Progress: 1424 on 1469 Progress: 1425 on 1469 Progress: 1426 on 1469 Progress: 1427 on 1469 Progress: 1428 on 1469 Progress: 1429 on 1469 Progress: 1430 on 1469 Progress: 1431 on 1469 Progress: 1432 on 1469 Progress: 1433 on 1469 Progress: 1434 on 1469 Progress: 1435 on 1469 Progress: 1436 on 1469 Progress: 1437 on 1469 Progress: 1438 on 1469 Progress: 1439 on 1469 Progress: 1440 on 1469 Progress: 1441 on 1469 Progress: 1442 on 1469 Progress: 1443 on 1469 Progress: 1444 on 1469 Progress: 1445 on 1469 Progress: 1446 on 1469 Progress: 1447 on 1469 Progress: 1448 on 1469 Progress: 1449 on 1469 Progress: 1450 on 1469 Progress: 1451 on 1469 Progress: 1452 on 1469 Progress: 1453 on 1469 Progress: 1454 on 1469 Progress: 1455 on 1469 Progress: 1456 on 1469 Progress: 1457 on 1469 Progress: 1458 on 1469 Progress: 1459 on 1469 Progress: 1460 on 1469 Progress: 1461 on 1469 Progress: 1462 on 1469 Progress: 1463 on 1469 Progress: 1464 on 1469 Progress: 1465 on 1469 Progress: 1466 on 1469 Progress: 1467 on 1469 Progress: 1468 on 1469 Progress: 1469 on 1469
BN_autor <- BN_autor %>%
mutate(ZA_ADNOTACJE = ifelse(czy_nazwisko==FALSE|czy_imie==FALSE,paste("UWAGA! Konflikt w danych osobowych w polach 100 i 245. Porównaj pole autor w formularzu z polem BN: ",X245c,sep = ""),NA)) %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE,ZA_ADNOTACJE) %>%
mutate(nazwa = str_replace_all(str_to_lower(paste(AM_NAZWISKO,AM_IMIE, sep = "")), "\\W", "")) %>%
left_join(.,PBL_autorzy %>% select(AM_AUTOR_ID,AM_KRYPTONIM,AM_LICZBA_ZAPISOW,nazwa) %>% filter(is.na(AM_KRYPTONIM)),by="nazwa") %>%
arrange(ZA_UWAGI,AM_NAZWISKO,AM_IMIE,-AM_LICZBA_ZAPISOW)
BN_autor$id_grupy <- cumsum(!duplicated(BN_autor[1:3]))
BN_autor <- BN_autor[!duplicated(BN_autor$id_grupy),] %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE,ZA_ADNOTACJE,AM_AUTOR_ID)
#3: tytuł
#pole 245
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
za_tytul <- marc_field_245 %>%
select(ZA_UWAGI,`$a`,`$b`,`$n`,`$p`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = " "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = " "),
`$n` = paste(ifelse(is.na(`$n`),"",as.character(`$n`)),collapse = " "),
`$p` = paste(ifelse(is.na(`$p`),"",as.character(`$p`)),collapse = " ")) %>%
ungroup() %>%
unique() %>%
unite("ZA_TYTUL",`$a`:`$p`,sep = " ",na.rm = TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL," +"," "),
ZA_TYTUL = str_remove(ZA_TYTUL, "\\s+\\/\\s{0,}$"),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\.{3} \\.{3}","... "),
ZA_TYTUL = str_replace_all(ZA_TYTUL," ; ",". "),
ZA_TYTUL = gsub("( : )(.)",". \\U\\2",perl=TRUE,ZA_TYTUL)) %>%
select(ZA_UWAGI,ZA_TYTUL)
#4: tytuł oryginału
#pole 246
marc_field_246 <- data %>%
select(ZA_UWAGI,X246)%>%
filter(X246!="") %>%
mutate(X246=str_remove_all(X246,"~"),
X246=str_replace_all(X246,"(^|\\|)","~\\1")) %>%
cSplit(.,"X246",sep = "~",direction = "long") %>%
filter(X246!="") %>%
mutate(X246=str_remove_all(X246,"^\\|")) %>%
mutate(indicator = str_replace_all(X246,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X246,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_246)[1]))
colnames(empty_table) <-subfield_list
marc_field_246<-cbind(marc_field_246,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_246$X246 <- str_replace(marc_field_246$X246,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_246[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_246$X246),str_replace_all(gsub(string,"\\3",marc_field_246$X246),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
if("$n" %in% colnames(marc_field_246)) {
marc_field_246 <- marc_field_246[, colSums(is.na(marc_field_246)) != nrow(marc_field_246)] %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`,`$b`,`$n`,`$p`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = ""),
`$n` = paste(ifelse(is.na(`$n`),"",as.character(`$n`)),collapse = ""),
`$p` = paste(ifelse(is.na(`$p`),"",as.character(`$p`)),collapse = "")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`:`$p`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
} else {
marc_field_246 <- marc_field_246[, colSums(is.na(marc_field_246)) != nrow(marc_field_246)] %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`,`$b`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = "")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`:`$b`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
}
#pole 500
marc_field_500 <- data %>%
select(ZA_UWAGI,X500)%>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"~"),
X500=str_replace_all(X500,"(^|\\|)","~\\1")) %>%
cSplit(.,"X500",sep = "~",direction = "long") %>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"^\\|")) %>%
mutate(indicator = str_replace_all(X500,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X500,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_500)[1]))
colnames(empty_table) <-subfield_list
marc_field_500<-cbind(marc_field_500,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_500$X500 <- str_replace(marc_field_500$X500,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_500[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_500$X500),str_replace_all(gsub(string,"\\3",marc_field_500$X500),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_500 <- marc_field_500 %>%
filter(grepl("oryg\\.\\:",X500)) %>%
mutate(X500 = str_remove(`$a`,"^Tyt\\. oryg\\.: |^Tyt\\, oryg\\.: |^.*?tyt\\. oryg\\.: "),
X500 = str_remove(X500, "\\s+\\/\\s{0,}$"),
X500 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X500),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X500),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X500),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X500),as.character(X500))))),
X500 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X500),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X500),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X500),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X500),as.character(X500))))),
X500 = str_replace_all(X500,"\\.{3} \\.{3}","... "),
X500 = str_remove(X500, "\\.$"),
X500 = str_remove(X500,"(,{0,1} {0,1})\\d{4}.*$|(, t|. T)yt. oryg. cyklu:")) %>%
select(ZA_UWAGI,X500)
#tytuł oryginału
za_tytul_oryginalu <- data %>%
select(ZA_UWAGI) %>%
left_join(.,marc_field_246,by="ZA_UWAGI") %>%
left_join(.,marc_field_500,by="ZA_UWAGI") %>%
mutate(X500 = ifelse(is.na(X500),NA,
ifelse(grepl("oryg",X500),NA,as.character(X500))),
X500 = ifelse(!is.na(X500)&grepl("\\. - ",X500),str_replace(X500,"(.*?)(\\. - .*$)","\\1"),as.character(X500)),
X500 = ifelse(!is.na(X500)&grepl("Na książce pseud",X500),str_replace(X500,"(.*?)(\\. Na książce pseud.*$)","\\1"),as.character(X500)),
X500 = ifelse(!is.na(X500)&grepl("Przekł\\. wg",X500),str_replace(X500,"(.*?)(\\. Przekł\\. wg.*$)","\\1"),as.character(X500)),
ZA_TYTUL_ORYGINALU = ifelse(is.na(X246)&is.na(X500),NA,
ifelse(!is.na(X500),as.character(X500),as.character(X246))),
ZA_TYTUL_ORYGINALU = str_remove_all(ZA_TYTUL_ORYGINALU,'\\"')) %>%
select(ZA_UWAGI,ZA_TYTUL_ORYGINALU)
#5: język oryginału
marc_field_041 <- data %>%
select(ZA_UWAGI,X041)%>%
filter(X041!="") %>%
mutate(X041=str_replace_all(X041,"(^|\\|)","~\\1")) %>%
cSplit(.,"X041",sep = "~",direction = "long") %>%
filter(X041!="") %>%
mutate(X041=str_remove_all(X041,"^\\|")) %>%
mutate(indicator = str_replace_all(X041,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X041,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_041)[1]))
colnames(empty_table) <-subfield_list
marc_field_041<-cbind(marc_field_041,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_041$X041 <- str_replace(marc_field_041$X041,subfield_list_char[i],"|\\1")
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_041[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_041$X041),str_replace_all(gsub(string,"\\3",marc_field_041$X041),"\\${2}.", "~"),NA)
}
Progress: 1 on 6 Progress: 2 on 6 Progress: 3 on 6 Progress: 4 on 6 Progress: 5 on 6 Progress: 6 on 6
za_jezyk_oryginalu <- data %>%
select(ZA_UWAGI) %>%
left_join(.,marc_field_041 %>% select(ZA_UWAGI,ZA_JEZYK_ORYGINALU = `$a`),by="ZA_UWAGI") %>%
mutate(ZA_JEZYK_ORYGINALU = str_replace_all(ZA_JEZYK_ORYGINALU,"\\$a",",")) %>%
unique()
#6: współtwórcy
marc_field_700 <- data %>%
select(ZA_UWAGI,X700)%>%
filter(X700!="") %>%
mutate(X700=str_replace_all(X700,"(..\\$a)","|\\1"),
X700=str_replace_all(X700,"(^|\\|)","~\\1")) %>%
cSplit(.,"X700",sep = "~",direction = "long") %>%
filter(X700!="") %>%
mutate(X700=str_remove_all(X700,"^\\|")) %>%
mutate(indicator = str_replace_all(X700,"(^.*?)(\\$.*)","\\1")) %>%
filter(X700!="")
subfield_list<- str_extract_all(data$X700,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_700)[1]))
colnames(empty_table) <-subfield_list
marc_field_700<-cbind(marc_field_700,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_700$X700 <- str_replace(marc_field_700$X700,subfield_list_char[i],"|\\1")
}
Progress: 1 on 9 Progress: 2 on 9 Progress: 3 on 9 Progress: 4 on 9 Progress: 5 on 9 Progress: 6 on 9 Progress: 7 on 9 Progress: 8 on 9 Progress: 9 on 9
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_700[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_700$X700),str_replace_all(gsub(string,"\\3",marc_field_700$X700),"\\${2}.", "~"),NA)
}
Progress: 1 on 9 Progress: 2 on 9 Progress: 3 on 9 Progress: 4 on 9 Progress: 5 on 9 Progress: 6 on 9 Progress: 7 on 9 Progress: 8 on 9 Progress: 9 on 9
BN_wspoltworca <- marc_field_700 %>%
select(ZA_UWAGI,osoba = `$a`,funkcja = `$e`) %>%
filter(!is.na(funkcja)) %>%
mutate(osoba = str_remove(osoba,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)"),
OS_NAZWISKO = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\1"),as.character(osoba)),
OS_IMIE = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\3"),"*"),
ws_prosty = str_replace_all(str_to_lower(osoba), "\\W", ""),
fu_prosta = str_replace_all(str_to_lower(funkcja), "\\W", "")) %>%
left_join(.,PBL_wspoltworcy %>% select(OS_OSOBA_ID,OS_LICZBA_ZAPISOW,nazwa_prosta),by=c("ws_prosty"="nazwa_prosta")) %>%
arrange(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,-OS_LICZBA_ZAPISOW)
BN_wspoltworca$id_grupy <- cumsum(!duplicated(BN_wspoltworca[1:2]))
BN_wspoltworca <- BN_wspoltworca[!duplicated(BN_wspoltworca$id_grupy),] %>%
left_join(.,PBL_funkcje,by=c("fu_prosta"="nazwa")) %>%
mutate(fo_symbol = ifelse(fo_symbol=="NULL",NA,as.character(fo_symbol))) %>%
select(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,OS_OSOBA_ID,fo_symbol,fo_nazwa,funkcja)
#tutaj przeszukać X245 i znaleźć błędy współtwórców
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,X245c=`$c`)
BN_wspoltworca <- BN_wspoltworca %>%
left_join(.,marc_field_245,by="ZA_UWAGI")
x <- 1:lengths(BN_wspoltworca[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
BN_wspoltworca$czy_nazwisko[i] <- str_detect(BN_wspoltworca$X245c[i],BN_wspoltworca$OS_NAZWISKO[i])
BN_wspoltworca$czy_imie[i] <- grepl(BN_wspoltworca$OS_IMIE[i],BN_wspoltworca$X245c[i])
}
Progress: 1 on 1545 Progress: 2 on 1545 Progress: 3 on 1545 Progress: 4 on 1545 Progress: 5 on 1545 Progress: 6 on 1545 Progress: 7 on 1545 Progress: 8 on 1545 Progress: 9 on 1545 Progress: 10 on 1545 Progress: 11 on 1545 Progress: 12 on 1545 Progress: 13 on 1545 Progress: 14 on 1545 Progress: 15 on 1545 Progress: 16 on 1545 Progress: 17 on 1545 Progress: 18 on 1545 Progress: 19 on 1545 Progress: 20 on 1545 Progress: 21 on 1545 Progress: 22 on 1545 Progress: 23 on 1545 Progress: 24 on 1545 Progress: 25 on 1545 Progress: 26 on 1545 Progress: 27 on 1545 Progress: 28 on 1545 Progress: 29 on 1545 Progress: 30 on 1545 Progress: 31 on 1545 Progress: 32 on 1545 Progress: 33 on 1545 Progress: 34 on 1545 Progress: 35 on 1545 Progress: 36 on 1545 Progress: 37 on 1545 Progress: 38 on 1545 Progress: 39 on 1545 Progress: 40 on 1545 Progress: 41 on 1545 Progress: 42 on 1545 Progress: 43 on 1545 Progress: 44 on 1545 Progress: 45 on 1545 Progress: 46 on 1545 Progress: 47 on 1545 Progress: 48 on 1545 Progress: 49 on 1545 Progress: 50 on 1545 Progress: 51 on 1545 Progress: 52 on 1545 Progress: 53 on 1545 Progress: 54 on 1545 Progress: 55 on 1545 Progress: 56 on 1545 Progress: 57 on 1545 Progress: 58 on 1545 Progress: 59 on 1545 Progress: 60 on 1545 Progress: 61 on 1545 Progress: 62 on 1545 Progress: 63 on 1545 Progress: 64 on 1545 Progress: 65 on 1545 Progress: 66 on 1545 Progress: 67 on 1545 Progress: 68 on 1545 Progress: 69 on 1545 Progress: 70 on 1545 Progress: 71 on 1545 Progress: 72 on 1545 Progress: 73 on 1545 Progress: 74 on 1545 Progress: 75 on 1545 Progress: 76 on 1545 Progress: 77 on 1545 Progress: 78 on 1545 Progress: 79 on 1545 Progress: 80 on 1545 Progress: 81 on 1545 Progress: 82 on 1545 Progress: 83 on 1545 Progress: 84 on 1545 Progress: 85 on 1545 Progress: 86 on 1545 Progress: 87 on 1545 Progress: 88 on 1545 Progress: 89 on 1545 Progress: 90 on 1545 Progress: 91 on 1545 Progress: 92 on 1545 Progress: 93 on 1545 Progress: 94 on 1545 Progress: 95 on 1545 Progress: 96 on 1545 Progress: 97 on 1545 Progress: 98 on 1545 Progress: 99 on 1545 Progress: 100 on 1545 Progress: 101 on 1545 Progress: 102 on 1545 Progress: 103 on 1545 Progress: 104 on 1545 Progress: 105 on 1545 Progress: 106 on 1545 Progress: 107 on 1545 Progress: 108 on 1545 Progress: 109 on 1545 Progress: 110 on 1545 Progress: 111 on 1545 Progress: 112 on 1545 Progress: 113 on 1545 Progress: 114 on 1545 Progress: 115 on 1545 Progress: 116 on 1545 Progress: 117 on 1545 Progress: 118 on 1545 Progress: 119 on 1545 Progress: 120 on 1545 Progress: 121 on 1545 Progress: 122 on 1545 Progress: 123 on 1545 Progress: 124 on 1545 Progress: 125 on 1545 Progress: 126 on 1545 Progress: 127 on 1545 Progress: 128 on 1545 Progress: 129 on 1545 Progress: 130 on 1545 Progress: 131 on 1545 Progress: 132 on 1545 Progress: 133 on 1545 Progress: 134 on 1545 Progress: 135 on 1545 Progress: 136 on 1545 Progress: 137 on 1545 Progress: 138 on 1545 Progress: 139 on 1545 Progress: 140 on 1545 Progress: 141 on 1545 Progress: 142 on 1545 Progress: 143 on 1545 Progress: 144 on 1545 Progress: 145 on 1545 Progress: 146 on 1545 Progress: 147 on 1545 Progress: 148 on 1545 Progress: 149 on 1545 Progress: 150 on 1545 Progress: 151 on 1545 Progress: 152 on 1545 Progress: 153 on 1545 Progress: 154 on 1545 Progress: 155 on 1545 Progress: 156 on 1545 Progress: 157 on 1545 Progress: 158 on 1545 Progress: 159 on 1545 Progress: 160 on 1545 Progress: 161 on 1545 Progress: 162 on 1545 Progress: 163 on 1545 Progress: 164 on 1545 Progress: 165 on 1545 Progress: 166 on 1545 Progress: 167 on 1545 Progress: 168 on 1545 Progress: 169 on 1545 Progress: 170 on 1545 Progress: 171 on 1545 Progress: 172 on 1545 Progress: 173 on 1545 Progress: 174 on 1545 Progress: 175 on 1545 Progress: 176 on 1545 Progress: 177 on 1545 Progress: 178 on 1545 Progress: 179 on 1545 Progress: 180 on 1545 Progress: 181 on 1545 Progress: 182 on 1545 Progress: 183 on 1545 Progress: 184 on 1545 Progress: 185 on 1545 Progress: 186 on 1545 Progress: 187 on 1545 Progress: 188 on 1545 Progress: 189 on 1545 Progress: 190 on 1545 Progress: 191 on 1545 Progress: 192 on 1545 Progress: 193 on 1545 Progress: 194 on 1545 Progress: 195 on 1545 Progress: 196 on 1545 Progress: 197 on 1545 Progress: 198 on 1545 Progress: 199 on 1545 Progress: 200 on 1545 Progress: 201 on 1545 Progress: 202 on 1545 Progress: 203 on 1545 Progress: 204 on 1545 Progress: 205 on 1545 Progress: 206 on 1545 Progress: 207 on 1545 Progress: 208 on 1545 Progress: 209 on 1545 Progress: 210 on 1545 Progress: 211 on 1545 Progress: 212 on 1545 Progress: 213 on 1545 Progress: 214 on 1545 Progress: 215 on 1545 Progress: 216 on 1545 Progress: 217 on 1545 Progress: 218 on 1545 Progress: 219 on 1545 Progress: 220 on 1545 Progress: 221 on 1545 Progress: 222 on 1545 Progress: 223 on 1545 Progress: 224 on 1545 Progress: 225 on 1545 Progress: 226 on 1545 Progress: 227 on 1545 Progress: 228 on 1545 Progress: 229 on 1545 Progress: 230 on 1545 Progress: 231 on 1545 Progress: 232 on 1545 Progress: 233 on 1545 Progress: 234 on 1545 Progress: 235 on 1545 Progress: 236 on 1545 Progress: 237 on 1545 Progress: 238 on 1545 Progress: 239 on 1545 Progress: 240 on 1545 Progress: 241 on 1545 Progress: 242 on 1545 Progress: 243 on 1545 Progress: 244 on 1545 Progress: 245 on 1545 Progress: 246 on 1545 Progress: 247 on 1545 Progress: 248 on 1545 Progress: 249 on 1545 Progress: 250 on 1545 Progress: 251 on 1545 Progress: 252 on 1545 Progress: 253 on 1545 Progress: 254 on 1545 Progress: 255 on 1545 Progress: 256 on 1545 Progress: 257 on 1545 Progress: 258 on 1545 Progress: 259 on 1545 Progress: 260 on 1545 Progress: 261 on 1545 Progress: 262 on 1545 Progress: 263 on 1545 Progress: 264 on 1545 Progress: 265 on 1545 Progress: 266 on 1545 Progress: 267 on 1545 Progress: 268 on 1545 Progress: 269 on 1545 Progress: 270 on 1545 Progress: 271 on 1545 Progress: 272 on 1545 Progress: 273 on 1545 Progress: 274 on 1545 Progress: 275 on 1545 Progress: 276 on 1545 Progress: 277 on 1545 Progress: 278 on 1545 Progress: 279 on 1545 Progress: 280 on 1545 Progress: 281 on 1545 Progress: 282 on 1545 Progress: 283 on 1545 Progress: 284 on 1545 Progress: 285 on 1545 Progress: 286 on 1545 Progress: 287 on 1545 Progress: 288 on 1545 Progress: 289 on 1545 Progress: 290 on 1545 Progress: 291 on 1545 Progress: 292 on 1545 Progress: 293 on 1545 Progress: 294 on 1545 Progress: 295 on 1545 Progress: 296 on 1545 Progress: 297 on 1545 Progress: 298 on 1545 Progress: 299 on 1545 Progress: 300 on 1545 Progress: 301 on 1545 Progress: 302 on 1545 Progress: 303 on 1545 Progress: 304 on 1545 Progress: 305 on 1545 Progress: 306 on 1545 Progress: 307 on 1545 Progress: 308 on 1545 Progress: 309 on 1545 Progress: 310 on 1545 Progress: 311 on 1545 Progress: 312 on 1545 Progress: 313 on 1545 Progress: 314 on 1545 Progress: 315 on 1545 Progress: 316 on 1545 Progress: 317 on 1545 Progress: 318 on 1545 Progress: 319 on 1545 Progress: 320 on 1545 Progress: 321 on 1545 Progress: 322 on 1545 Progress: 323 on 1545 Progress: 324 on 1545 Progress: 325 on 1545 Progress: 326 on 1545 Progress: 327 on 1545 Progress: 328 on 1545 Progress: 329 on 1545 Progress: 330 on 1545 Progress: 331 on 1545 Progress: 332 on 1545 Progress: 333 on 1545 Progress: 334 on 1545 Progress: 335 on 1545 Progress: 336 on 1545 Progress: 337 on 1545 Progress: 338 on 1545 Progress: 339 on 1545 Progress: 340 on 1545 Progress: 341 on 1545 Progress: 342 on 1545 Progress: 343 on 1545 Progress: 344 on 1545 Progress: 345 on 1545 Progress: 346 on 1545 Progress: 347 on 1545 Progress: 348 on 1545 Progress: 349 on 1545 Progress: 350 on 1545 Progress: 351 on 1545 Progress: 352 on 1545 Progress: 353 on 1545 Progress: 354 on 1545 Progress: 355 on 1545 Progress: 356 on 1545 Progress: 357 on 1545 Progress: 358 on 1545 Progress: 359 on 1545 Progress: 360 on 1545 Progress: 361 on 1545 Progress: 362 on 1545 Progress: 363 on 1545 Progress: 364 on 1545 Progress: 365 on 1545 Progress: 366 on 1545 Progress: 367 on 1545 Progress: 368 on 1545 Progress: 369 on 1545 Progress: 370 on 1545 Progress: 371 on 1545 Progress: 372 on 1545 Progress: 373 on 1545 Progress: 374 on 1545 Progress: 375 on 1545 Progress: 376 on 1545 Progress: 377 on 1545 Progress: 378 on 1545 Progress: 379 on 1545 Progress: 380 on 1545 Progress: 381 on 1545 Progress: 382 on 1545 Progress: 383 on 1545 Progress: 384 on 1545 Progress: 385 on 1545 Progress: 386 on 1545 Progress: 387 on 1545 Progress: 388 on 1545 Progress: 389 on 1545 Progress: 390 on 1545 Progress: 391 on 1545 Progress: 392 on 1545 Progress: 393 on 1545 Progress: 394 on 1545 Progress: 395 on 1545 Progress: 396 on 1545 Progress: 397 on 1545 Progress: 398 on 1545 Progress: 399 on 1545 Progress: 400 on 1545 Progress: 401 on 1545 Progress: 402 on 1545 Progress: 403 on 1545 Progress: 404 on 1545 Progress: 405 on 1545 Progress: 406 on 1545 Progress: 407 on 1545 Progress: 408 on 1545 Progress: 409 on 1545 Progress: 410 on 1545 Progress: 411 on 1545 Progress: 412 on 1545 Progress: 413 on 1545 Progress: 414 on 1545 Progress: 415 on 1545 Progress: 416 on 1545 Progress: 417 on 1545 Progress: 418 on 1545 Progress: 419 on 1545 Progress: 420 on 1545 Progress: 421 on 1545 Progress: 422 on 1545 Progress: 423 on 1545 Progress: 424 on 1545 Progress: 425 on 1545 Progress: 426 on 1545 Progress: 427 on 1545 Progress: 428 on 1545 Progress: 429 on 1545 Progress: 430 on 1545 Progress: 431 on 1545 Progress: 432 on 1545 Progress: 433 on 1545 Progress: 434 on 1545 Progress: 435 on 1545 Progress: 436 on 1545 Progress: 437 on 1545 Progress: 438 on 1545 Progress: 439 on 1545 Progress: 440 on 1545 Progress: 441 on 1545 Progress: 442 on 1545 Progress: 443 on 1545 Progress: 444 on 1545 Progress: 445 on 1545 Progress: 446 on 1545 Progress: 447 on 1545 Progress: 448 on 1545 Progress: 449 on 1545 Progress: 450 on 1545 Progress: 451 on 1545 Progress: 452 on 1545 Progress: 453 on 1545 Progress: 454 on 1545 Progress: 455 on 1545 Progress: 456 on 1545 Progress: 457 on 1545 Progress: 458 on 1545 Progress: 459 on 1545 Progress: 460 on 1545 Progress: 461 on 1545 Progress: 462 on 1545 Progress: 463 on 1545 Progress: 464 on 1545 Progress: 465 on 1545 Progress: 466 on 1545 Progress: 467 on 1545 Progress: 468 on 1545 Progress: 469 on 1545 Progress: 470 on 1545 Progress: 471 on 1545 Progress: 472 on 1545 Progress: 473 on 1545 Progress: 474 on 1545 Progress: 475 on 1545 Progress: 476 on 1545 Progress: 477 on 1545 Progress: 478 on 1545 Progress: 479 on 1545 Progress: 480 on 1545 Progress: 481 on 1545 Progress: 482 on 1545 Progress: 483 on 1545 Progress: 484 on 1545 Progress: 485 on 1545 Progress: 486 on 1545 Progress: 487 on 1545 Progress: 488 on 1545 Progress: 489 on 1545 Progress: 490 on 1545 Progress: 491 on 1545 Progress: 492 on 1545 Progress: 493 on 1545 Progress: 494 on 1545 Progress: 495 on 1545 Progress: 496 on 1545 Progress: 497 on 1545 Progress: 498 on 1545 Progress: 499 on 1545 Progress: 500 on 1545 Progress: 501 on 1545 Progress: 502 on 1545 Progress: 503 on 1545 Progress: 504 on 1545 Progress: 505 on 1545 Progress: 506 on 1545 Progress: 507 on 1545 Progress: 508 on 1545 Progress: 509 on 1545 Progress: 510 on 1545 Progress: 511 on 1545 Progress: 512 on 1545 Progress: 513 on 1545 Progress: 514 on 1545 Progress: 515 on 1545 Progress: 516 on 1545 Progress: 517 on 1545 Progress: 518 on 1545 Progress: 519 on 1545 Progress: 520 on 1545 Progress: 521 on 1545 Progress: 522 on 1545 Progress: 523 on 1545 Progress: 524 on 1545 Progress: 525 on 1545 Progress: 526 on 1545 Progress: 527 on 1545 Progress: 528 on 1545 Progress: 529 on 1545 Progress: 530 on 1545 Progress: 531 on 1545 Progress: 532 on 1545 Progress: 533 on 1545 Progress: 534 on 1545 Progress: 535 on 1545 Progress: 536 on 1545 Progress: 537 on 1545 Progress: 538 on 1545 Progress: 539 on 1545 Progress: 540 on 1545 Progress: 541 on 1545 Progress: 542 on 1545 Progress: 543 on 1545 Progress: 544 on 1545 Progress: 545 on 1545 Progress: 546 on 1545 Progress: 547 on 1545 Progress: 548 on 1545 Progress: 549 on 1545 Progress: 550 on 1545 Progress: 551 on 1545 Progress: 552 on 1545 Progress: 553 on 1545 Progress: 554 on 1545 Progress: 555 on 1545 Progress: 556 on 1545 Progress: 557 on 1545 Progress: 558 on 1545 Progress: 559 on 1545 Progress: 560 on 1545 Progress: 561 on 1545 Progress: 562 on 1545 Progress: 563 on 1545 Progress: 564 on 1545 Progress: 565 on 1545 Progress: 566 on 1545 Progress: 567 on 1545 Progress: 568 on 1545 Progress: 569 on 1545 Progress: 570 on 1545 Progress: 571 on 1545 Progress: 572 on 1545 Progress: 573 on 1545 Progress: 574 on 1545 Progress: 575 on 1545 Progress: 576 on 1545 Progress: 577 on 1545 Progress: 578 on 1545 Progress: 579 on 1545 Progress: 580 on 1545 Progress: 581 on 1545 Progress: 582 on 1545 Progress: 583 on 1545 Progress: 584 on 1545 Progress: 585 on 1545 Progress: 586 on 1545 Progress: 587 on 1545 Progress: 588 on 1545 Progress: 589 on 1545 Progress: 590 on 1545 Progress: 591 on 1545 Progress: 592 on 1545 Progress: 593 on 1545 Progress: 594 on 1545 Progress: 595 on 1545 Progress: 596 on 1545 Progress: 597 on 1545 Progress: 598 on 1545 Progress: 599 on 1545 Progress: 600 on 1545 Progress: 601 on 1545 Progress: 602 on 1545 Progress: 603 on 1545 Progress: 604 on 1545 Progress: 605 on 1545 Progress: 606 on 1545 Progress: 607 on 1545 Progress: 608 on 1545 Progress: 609 on 1545 Progress: 610 on 1545 Progress: 611 on 1545 Progress: 612 on 1545 Progress: 613 on 1545 Progress: 614 on 1545 Progress: 615 on 1545 Progress: 616 on 1545 Progress: 617 on 1545 Progress: 618 on 1545 Progress: 619 on 1545 Progress: 620 on 1545 Progress: 621 on 1545 Progress: 622 on 1545 Progress: 623 on 1545 Progress: 624 on 1545 Progress: 625 on 1545 Progress: 626 on 1545 Progress: 627 on 1545 Progress: 628 on 1545 Progress: 629 on 1545 Progress: 630 on 1545 Progress: 631 on 1545 Progress: 632 on 1545 Progress: 633 on 1545 Progress: 634 on 1545 Progress: 635 on 1545 Progress: 636 on 1545 Progress: 637 on 1545 Progress: 638 on 1545 Progress: 639 on 1545 Progress: 640 on 1545 Progress: 641 on 1545 Progress: 642 on 1545 Progress: 643 on 1545 Progress: 644 on 1545 Progress: 645 on 1545 Progress: 646 on 1545 Progress: 647 on 1545 Progress: 648 on 1545 Progress: 649 on 1545 Progress: 650 on 1545 Progress: 651 on 1545 Progress: 652 on 1545 Progress: 653 on 1545 Progress: 654 on 1545 Progress: 655 on 1545 Progress: 656 on 1545 Progress: 657 on 1545 Progress: 658 on 1545 Progress: 659 on 1545 Progress: 660 on 1545 Progress: 661 on 1545 Progress: 662 on 1545 Progress: 663 on 1545 Progress: 664 on 1545 Progress: 665 on 1545 Progress: 666 on 1545 Progress: 667 on 1545 Progress: 668 on 1545 Progress: 669 on 1545 Progress: 670 on 1545 Progress: 671 on 1545 Progress: 672 on 1545 Progress: 673 on 1545 Progress: 674 on 1545 Progress: 675 on 1545 Progress: 676 on 1545 Progress: 677 on 1545 Progress: 678 on 1545 Progress: 679 on 1545 Progress: 680 on 1545 Progress: 681 on 1545 Progress: 682 on 1545 Progress: 683 on 1545 Progress: 684 on 1545 Progress: 685 on 1545 Progress: 686 on 1545 Progress: 687 on 1545 Progress: 688 on 1545 Progress: 689 on 1545 Progress: 690 on 1545 Progress: 691 on 1545 Progress: 692 on 1545 Progress: 693 on 1545 Progress: 694 on 1545 Progress: 695 on 1545 Progress: 696 on 1545 Progress: 697 on 1545 Progress: 698 on 1545 Progress: 699 on 1545 Progress: 700 on 1545 Progress: 701 on 1545 Progress: 702 on 1545 Progress: 703 on 1545 Progress: 704 on 1545 Progress: 705 on 1545 Progress: 706 on 1545 Progress: 707 on 1545 Progress: 708 on 1545 Progress: 709 on 1545 Progress: 710 on 1545 Progress: 711 on 1545 Progress: 712 on 1545 Progress: 713 on 1545 Progress: 714 on 1545 Progress: 715 on 1545 Progress: 716 on 1545 Progress: 717 on 1545 Progress: 718 on 1545 Progress: 719 on 1545 Progress: 720 on 1545 Progress: 721 on 1545 Progress: 722 on 1545 Progress: 723 on 1545 Progress: 724 on 1545 Progress: 725 on 1545 Progress: 726 on 1545 Progress: 727 on 1545 Progress: 728 on 1545 Progress: 729 on 1545 Progress: 730 on 1545 Progress: 731 on 1545 Progress: 732 on 1545 Progress: 733 on 1545 Progress: 734 on 1545 Progress: 735 on 1545 Progress: 736 on 1545 Progress: 737 on 1545 Progress: 738 on 1545 Progress: 739 on 1545 Progress: 740 on 1545 Progress: 741 on 1545 Progress: 742 on 1545 Progress: 743 on 1545 Progress: 744 on 1545 Progress: 745 on 1545 Progress: 746 on 1545 Progress: 747 on 1545 Progress: 748 on 1545 Progress: 749 on 1545 Progress: 750 on 1545 Progress: 751 on 1545 Progress: 752 on 1545 Progress: 753 on 1545 Progress: 754 on 1545 Progress: 755 on 1545 Progress: 756 on 1545 Progress: 757 on 1545 Progress: 758 on 1545 Progress: 759 on 1545 Progress: 760 on 1545 Progress: 761 on 1545 Progress: 762 on 1545 Progress: 763 on 1545 Progress: 764 on 1545 Progress: 765 on 1545 Progress: 766 on 1545 Progress: 767 on 1545 Progress: 768 on 1545 Progress: 769 on 1545 Progress: 770 on 1545 Progress: 771 on 1545 Progress: 772 on 1545 Progress: 773 on 1545 Progress: 774 on 1545 Progress: 775 on 1545 Progress: 776 on 1545 Progress: 777 on 1545 Progress: 778 on 1545 Progress: 779 on 1545 Progress: 780 on 1545 Progress: 781 on 1545 Progress: 782 on 1545 Progress: 783 on 1545 Progress: 784 on 1545 Progress: 785 on 1545 Progress: 786 on 1545 Progress: 787 on 1545 Progress: 788 on 1545 Progress: 789 on 1545 Progress: 790 on 1545 Progress: 791 on 1545 Progress: 792 on 1545 Progress: 793 on 1545 Progress: 794 on 1545 Progress: 795 on 1545 Progress: 796 on 1545 Progress: 797 on 1545 Progress: 798 on 1545 Progress: 799 on 1545 Progress: 800 on 1545 Progress: 801 on 1545 Progress: 802 on 1545 Progress: 803 on 1545 Progress: 804 on 1545 Progress: 805 on 1545 Progress: 806 on 1545 Progress: 807 on 1545 Progress: 808 on 1545 Progress: 809 on 1545 Progress: 810 on 1545 Progress: 811 on 1545 Progress: 812 on 1545 Progress: 813 on 1545 Progress: 814 on 1545 Progress: 815 on 1545 Progress: 816 on 1545 Progress: 817 on 1545 Progress: 818 on 1545 Progress: 819 on 1545 Progress: 820 on 1545 Progress: 821 on 1545 Progress: 822 on 1545 Progress: 823 on 1545 Progress: 824 on 1545 Progress: 825 on 1545 Progress: 826 on 1545 Progress: 827 on 1545 Progress: 828 on 1545 Progress: 829 on 1545 Progress: 830 on 1545 Progress: 831 on 1545 Progress: 832 on 1545 Progress: 833 on 1545 Progress: 834 on 1545 Progress: 835 on 1545 Progress: 836 on 1545 Progress: 837 on 1545 Progress: 838 on 1545 Progress: 839 on 1545 Progress: 840 on 1545 Progress: 841 on 1545 Progress: 842 on 1545 Progress: 843 on 1545 Progress: 844 on 1545 Progress: 845 on 1545 Progress: 846 on 1545 Progress: 847 on 1545 Progress: 848 on 1545 Progress: 849 on 1545 Progress: 850 on 1545 Progress: 851 on 1545 Progress: 852 on 1545 Progress: 853 on 1545 Progress: 854 on 1545 Progress: 855 on 1545 Progress: 856 on 1545 Progress: 857 on 1545 Progress: 858 on 1545 Progress: 859 on 1545 Progress: 860 on 1545 Progress: 861 on 1545 Progress: 862 on 1545 Progress: 863 on 1545 Progress: 864 on 1545 Progress: 865 on 1545 Progress: 866 on 1545 Progress: 867 on 1545 Progress: 868 on 1545 Progress: 869 on 1545 Progress: 870 on 1545 Progress: 871 on 1545 Progress: 872 on 1545 Progress: 873 on 1545 Progress: 874 on 1545 Progress: 875 on 1545 Progress: 876 on 1545 Progress: 877 on 1545 Progress: 878 on 1545 Progress: 879 on 1545 Progress: 880 on 1545 Progress: 881 on 1545 Progress: 882 on 1545 Progress: 883 on 1545 Progress: 884 on 1545 Progress: 885 on 1545 Progress: 886 on 1545 Progress: 887 on 1545 Progress: 888 on 1545 Progress: 889 on 1545 Progress: 890 on 1545 Progress: 891 on 1545 Progress: 892 on 1545 Progress: 893 on 1545 Progress: 894 on 1545 Progress: 895 on 1545 Progress: 896 on 1545 Progress: 897 on 1545 Progress: 898 on 1545 Progress: 899 on 1545 Progress: 900 on 1545 Progress: 901 on 1545 Progress: 902 on 1545 Progress: 903 on 1545 Progress: 904 on 1545 Progress: 905 on 1545 Progress: 906 on 1545 Progress: 907 on 1545 Progress: 908 on 1545 Progress: 909 on 1545 Progress: 910 on 1545 Progress: 911 on 1545 Progress: 912 on 1545 Progress: 913 on 1545 Progress: 914 on 1545 Progress: 915 on 1545 Progress: 916 on 1545 Progress: 917 on 1545 Progress: 918 on 1545 Progress: 919 on 1545 Progress: 920 on 1545 Progress: 921 on 1545 Progress: 922 on 1545 Progress: 923 on 1545 Progress: 924 on 1545 Progress: 925 on 1545 Progress: 926 on 1545 Progress: 927 on 1545 Progress: 928 on 1545 Progress: 929 on 1545 Progress: 930 on 1545 Progress: 931 on 1545 Progress: 932 on 1545 Progress: 933 on 1545 Progress: 934 on 1545 Progress: 935 on 1545 Progress: 936 on 1545 Progress: 937 on 1545 Progress: 938 on 1545 Progress: 939 on 1545 Progress: 940 on 1545 Progress: 941 on 1545 Progress: 942 on 1545 Progress: 943 on 1545 Progress: 944 on 1545 Progress: 945 on 1545 Progress: 946 on 1545 Progress: 947 on 1545 Progress: 948 on 1545 Progress: 949 on 1545 Progress: 950 on 1545 Progress: 951 on 1545 Progress: 952 on 1545 Progress: 953 on 1545 Progress: 954 on 1545 Progress: 955 on 1545 Progress: 956 on 1545 Progress: 957 on 1545 Progress: 958 on 1545 Progress: 959 on 1545 Progress: 960 on 1545 Progress: 961 on 1545 Progress: 962 on 1545 Progress: 963 on 1545 Progress: 964 on 1545 Progress: 965 on 1545 Progress: 966 on 1545 Progress: 967 on 1545 Progress: 968 on 1545 Progress: 969 on 1545 Progress: 970 on 1545 Progress: 971 on 1545 Progress: 972 on 1545 Progress: 973 on 1545 Progress: 974 on 1545 Progress: 975 on 1545 Progress: 976 on 1545 Progress: 977 on 1545 Progress: 978 on 1545 Progress: 979 on 1545 Progress: 980 on 1545 Progress: 981 on 1545 Progress: 982 on 1545 Progress: 983 on 1545 Progress: 984 on 1545 Progress: 985 on 1545 Progress: 986 on 1545 Progress: 987 on 1545 Progress: 988 on 1545 Progress: 989 on 1545 Progress: 990 on 1545 Progress: 991 on 1545 Progress: 992 on 1545 Progress: 993 on 1545 Progress: 994 on 1545 Progress: 995 on 1545 Progress: 996 on 1545 Progress: 997 on 1545 Progress: 998 on 1545 Progress: 999 on 1545 Progress: 1000 on 1545 Progress: 1001 on 1545 Progress: 1002 on 1545 Progress: 1003 on 1545 Progress: 1004 on 1545 Progress: 1005 on 1545 Progress: 1006 on 1545 Progress: 1007 on 1545 Progress: 1008 on 1545 Progress: 1009 on 1545 Progress: 1010 on 1545 Progress: 1011 on 1545 Progress: 1012 on 1545 Progress: 1013 on 1545 Progress: 1014 on 1545 Progress: 1015 on 1545 Progress: 1016 on 1545 Progress: 1017 on 1545 Progress: 1018 on 1545 Progress: 1019 on 1545 Progress: 1020 on 1545 Progress: 1021 on 1545 Progress: 1022 on 1545 Progress: 1023 on 1545 Progress: 1024 on 1545 Progress: 1025 on 1545 Progress: 1026 on 1545 Progress: 1027 on 1545 Progress: 1028 on 1545 Progress: 1029 on 1545 Progress: 1030 on 1545 Progress: 1031 on 1545 Progress: 1032 on 1545 Progress: 1033 on 1545 Progress: 1034 on 1545 Progress: 1035 on 1545 Progress: 1036 on 1545 Progress: 1037 on 1545 Progress: 1038 on 1545 Progress: 1039 on 1545 Progress: 1040 on 1545 Progress: 1041 on 1545 Progress: 1042 on 1545 Progress: 1043 on 1545 Progress: 1044 on 1545 Progress: 1045 on 1545 Progress: 1046 on 1545 Progress: 1047 on 1545 Progress: 1048 on 1545 Progress: 1049 on 1545 Progress: 1050 on 1545 Progress: 1051 on 1545 Progress: 1052 on 1545 Progress: 1053 on 1545 Progress: 1054 on 1545 Progress: 1055 on 1545 Progress: 1056 on 1545 Progress: 1057 on 1545 Progress: 1058 on 1545 Progress: 1059 on 1545 Progress: 1060 on 1545 Progress: 1061 on 1545 Progress: 1062 on 1545 Progress: 1063 on 1545 Progress: 1064 on 1545 Progress: 1065 on 1545 Progress: 1066 on 1545 Progress: 1067 on 1545 Progress: 1068 on 1545 Progress: 1069 on 1545 Progress: 1070 on 1545 Progress: 1071 on 1545 Progress: 1072 on 1545 Progress: 1073 on 1545 Progress: 1074 on 1545 Progress: 1075 on 1545 Progress: 1076 on 1545 Progress: 1077 on 1545 Progress: 1078 on 1545 Progress: 1079 on 1545 Progress: 1080 on 1545 Progress: 1081 on 1545 Progress: 1082 on 1545 Progress: 1083 on 1545 Progress: 1084 on 1545 Progress: 1085 on 1545 Progress: 1086 on 1545 Progress: 1087 on 1545 Progress: 1088 on 1545 Progress: 1089 on 1545 Progress: 1090 on 1545 Progress: 1091 on 1545 Progress: 1092 on 1545 Progress: 1093 on 1545 Progress: 1094 on 1545 Progress: 1095 on 1545 Progress: 1096 on 1545 Progress: 1097 on 1545 Progress: 1098 on 1545 Progress: 1099 on 1545 Progress: 1100 on 1545 Progress: 1101 on 1545 Progress: 1102 on 1545 Progress: 1103 on 1545 Progress: 1104 on 1545 Progress: 1105 on 1545 Progress: 1106 on 1545 Progress: 1107 on 1545 Progress: 1108 on 1545 Progress: 1109 on 1545 Progress: 1110 on 1545 Progress: 1111 on 1545 Progress: 1112 on 1545 Progress: 1113 on 1545 Progress: 1114 on 1545 Progress: 1115 on 1545 Progress: 1116 on 1545 Progress: 1117 on 1545 Progress: 1118 on 1545 Progress: 1119 on 1545 Progress: 1120 on 1545 Progress: 1121 on 1545 Progress: 1122 on 1545 Progress: 1123 on 1545 Progress: 1124 on 1545 Progress: 1125 on 1545 Progress: 1126 on 1545 Progress: 1127 on 1545 Progress: 1128 on 1545 Progress: 1129 on 1545 Progress: 1130 on 1545 Progress: 1131 on 1545 Progress: 1132 on 1545 Progress: 1133 on 1545 Progress: 1134 on 1545 Progress: 1135 on 1545 Progress: 1136 on 1545 Progress: 1137 on 1545 Progress: 1138 on 1545 Progress: 1139 on 1545 Progress: 1140 on 1545 Progress: 1141 on 1545 Progress: 1142 on 1545 Progress: 1143 on 1545 Progress: 1144 on 1545 Progress: 1145 on 1545 Progress: 1146 on 1545 Progress: 1147 on 1545 Progress: 1148 on 1545 Progress: 1149 on 1545 Progress: 1150 on 1545 Progress: 1151 on 1545 Progress: 1152 on 1545 Progress: 1153 on 1545 Progress: 1154 on 1545 Progress: 1155 on 1545 Progress: 1156 on 1545 Progress: 1157 on 1545 Progress: 1158 on 1545 Progress: 1159 on 1545 Progress: 1160 on 1545 Progress: 1161 on 1545 Progress: 1162 on 1545 Progress: 1163 on 1545 Progress: 1164 on 1545 Progress: 1165 on 1545 Progress: 1166 on 1545 Progress: 1167 on 1545 Progress: 1168 on 1545 Progress: 1169 on 1545 Progress: 1170 on 1545 Progress: 1171 on 1545 Progress: 1172 on 1545 Progress: 1173 on 1545 Progress: 1174 on 1545 Progress: 1175 on 1545 Progress: 1176 on 1545 Progress: 1177 on 1545 Progress: 1178 on 1545 Progress: 1179 on 1545 Progress: 1180 on 1545 Progress: 1181 on 1545 Progress: 1182 on 1545 Progress: 1183 on 1545 Progress: 1184 on 1545 Progress: 1185 on 1545 Progress: 1186 on 1545 Progress: 1187 on 1545 Progress: 1188 on 1545 Progress: 1189 on 1545 Progress: 1190 on 1545 Progress: 1191 on 1545 Progress: 1192 on 1545 Progress: 1193 on 1545 Progress: 1194 on 1545 Progress: 1195 on 1545 Progress: 1196 on 1545 Progress: 1197 on 1545 Progress: 1198 on 1545 Progress: 1199 on 1545 Progress: 1200 on 1545 Progress: 1201 on 1545 Progress: 1202 on 1545 Progress: 1203 on 1545 Progress: 1204 on 1545 Progress: 1205 on 1545 Progress: 1206 on 1545 Progress: 1207 on 1545 Progress: 1208 on 1545 Progress: 1209 on 1545 Progress: 1210 on 1545 Progress: 1211 on 1545 Progress: 1212 on 1545 Progress: 1213 on 1545 Progress: 1214 on 1545 Progress: 1215 on 1545 Progress: 1216 on 1545 Progress: 1217 on 1545 Progress: 1218 on 1545 Progress: 1219 on 1545 Progress: 1220 on 1545 Progress: 1221 on 1545 Progress: 1222 on 1545 Progress: 1223 on 1545 Progress: 1224 on 1545 Progress: 1225 on 1545 Progress: 1226 on 1545 Progress: 1227 on 1545 Progress: 1228 on 1545 Progress: 1229 on 1545 Progress: 1230 on 1545 Progress: 1231 on 1545 Progress: 1232 on 1545 Progress: 1233 on 1545 Progress: 1234 on 1545 Progress: 1235 on 1545 Progress: 1236 on 1545 Progress: 1237 on 1545 Progress: 1238 on 1545 Progress: 1239 on 1545 Progress: 1240 on 1545 Progress: 1241 on 1545 Progress: 1242 on 1545 Progress: 1243 on 1545 Progress: 1244 on 1545 Progress: 1245 on 1545 Progress: 1246 on 1545 Progress: 1247 on 1545 Progress: 1248 on 1545 Progress: 1249 on 1545 Progress: 1250 on 1545 Progress: 1251 on 1545 Progress: 1252 on 1545 Progress: 1253 on 1545 Progress: 1254 on 1545 Progress: 1255 on 1545 Progress: 1256 on 1545 Progress: 1257 on 1545 Progress: 1258 on 1545 Progress: 1259 on 1545 Progress: 1260 on 1545 Progress: 1261 on 1545 Progress: 1262 on 1545 Progress: 1263 on 1545 Progress: 1264 on 1545 Progress: 1265 on 1545 Progress: 1266 on 1545 Progress: 1267 on 1545 Progress: 1268 on 1545 Progress: 1269 on 1545 Progress: 1270 on 1545 Progress: 1271 on 1545 Progress: 1272 on 1545 Progress: 1273 on 1545 Progress: 1274 on 1545 Progress: 1275 on 1545 Progress: 1276 on 1545 Progress: 1277 on 1545 Progress: 1278 on 1545 Progress: 1279 on 1545 Progress: 1280 on 1545 Progress: 1281 on 1545 Progress: 1282 on 1545 Progress: 1283 on 1545 Progress: 1284 on 1545 Progress: 1285 on 1545 Progress: 1286 on 1545 Progress: 1287 on 1545 Progress: 1288 on 1545 Progress: 1289 on 1545 Progress: 1290 on 1545 Progress: 1291 on 1545 Progress: 1292 on 1545 Progress: 1293 on 1545 Progress: 1294 on 1545 Progress: 1295 on 1545 Progress: 1296 on 1545 Progress: 1297 on 1545 Progress: 1298 on 1545 Progress: 1299 on 1545 Progress: 1300 on 1545 Progress: 1301 on 1545 Progress: 1302 on 1545 Progress: 1303 on 1545 Progress: 1304 on 1545 Progress: 1305 on 1545 Progress: 1306 on 1545 Progress: 1307 on 1545 Progress: 1308 on 1545 Progress: 1309 on 1545 Progress: 1310 on 1545 Progress: 1311 on 1545 Progress: 1312 on 1545 Progress: 1313 on 1545 Progress: 1314 on 1545 Progress: 1315 on 1545 Progress: 1316 on 1545 Progress: 1317 on 1545 Progress: 1318 on 1545 Progress: 1319 on 1545 Progress: 1320 on 1545 Progress: 1321 on 1545 Progress: 1322 on 1545 Progress: 1323 on 1545 Progress: 1324 on 1545 Progress: 1325 on 1545 Progress: 1326 on 1545 Progress: 1327 on 1545 Progress: 1328 on 1545 Progress: 1329 on 1545 Progress: 1330 on 1545 Progress: 1331 on 1545 Progress: 1332 on 1545 Progress: 1333 on 1545 Progress: 1334 on 1545 Progress: 1335 on 1545 Progress: 1336 on 1545 Progress: 1337 on 1545 Progress: 1338 on 1545 Progress: 1339 on 1545 Progress: 1340 on 1545 Progress: 1341 on 1545 Progress: 1342 on 1545 Progress: 1343 on 1545 Progress: 1344 on 1545 Progress: 1345 on 1545 Progress: 1346 on 1545 Progress: 1347 on 1545 Progress: 1348 on 1545 Progress: 1349 on 1545 Progress: 1350 on 1545 Progress: 1351 on 1545 Progress: 1352 on 1545 Progress: 1353 on 1545 Progress: 1354 on 1545 Progress: 1355 on 1545 Progress: 1356 on 1545 Progress: 1357 on 1545 Progress: 1358 on 1545 Progress: 1359 on 1545 Progress: 1360 on 1545 Progress: 1361 on 1545 Progress: 1362 on 1545 Progress: 1363 on 1545 Progress: 1364 on 1545 Progress: 1365 on 1545 Progress: 1366 on 1545 Progress: 1367 on 1545 Progress: 1368 on 1545 Progress: 1369 on 1545 Progress: 1370 on 1545 Progress: 1371 on 1545 Progress: 1372 on 1545 Progress: 1373 on 1545 Progress: 1374 on 1545 Progress: 1375 on 1545 Progress: 1376 on 1545 Progress: 1377 on 1545 Progress: 1378 on 1545 Progress: 1379 on 1545 Progress: 1380 on 1545 Progress: 1381 on 1545 Progress: 1382 on 1545 Progress: 1383 on 1545 Progress: 1384 on 1545 Progress: 1385 on 1545 Progress: 1386 on 1545 Progress: 1387 on 1545 Progress: 1388 on 1545 Progress: 1389 on 1545 Progress: 1390 on 1545 Progress: 1391 on 1545 Progress: 1392 on 1545 Progress: 1393 on 1545 Progress: 1394 on 1545 Progress: 1395 on 1545 Progress: 1396 on 1545 Progress: 1397 on 1545 Progress: 1398 on 1545 Progress: 1399 on 1545 Progress: 1400 on 1545 Progress: 1401 on 1545 Progress: 1402 on 1545 Progress: 1403 on 1545 Progress: 1404 on 1545 Progress: 1405 on 1545 Progress: 1406 on 1545 Progress: 1407 on 1545 Progress: 1408 on 1545 Progress: 1409 on 1545 Progress: 1410 on 1545 Progress: 1411 on 1545 Progress: 1412 on 1545 Progress: 1413 on 1545 Progress: 1414 on 1545 Progress: 1415 on 1545 Progress: 1416 on 1545 Progress: 1417 on 1545 Progress: 1418 on 1545 Progress: 1419 on 1545 Progress: 1420 on 1545 Progress: 1421 on 1545 Progress: 1422 on 1545 Progress: 1423 on 1545 Progress: 1424 on 1545 Progress: 1425 on 1545 Progress: 1426 on 1545 Progress: 1427 on 1545 Progress: 1428 on 1545 Progress: 1429 on 1545 Progress: 1430 on 1545 Progress: 1431 on 1545 Progress: 1432 on 1545 Progress: 1433 on 1545 Progress: 1434 on 1545 Progress: 1435 on 1545 Progress: 1436 on 1545 Progress: 1437 on 1545 Progress: 1438 on 1545 Progress: 1439 on 1545 Progress: 1440 on 1545 Progress: 1441 on 1545 Progress: 1442 on 1545 Progress: 1443 on 1545 Progress: 1444 on 1545 Progress: 1445 on 1545 Progress: 1446 on 1545 Progress: 1447 on 1545 Progress: 1448 on 1545 Progress: 1449 on 1545 Progress: 1450 on 1545 Progress: 1451 on 1545 Progress: 1452 on 1545 Progress: 1453 on 1545 Progress: 1454 on 1545 Progress: 1455 on 1545 Progress: 1456 on 1545 Progress: 1457 on 1545 Progress: 1458 on 1545 Progress: 1459 on 1545 Progress: 1460 on 1545 Progress: 1461 on 1545 Progress: 1462 on 1545 Progress: 1463 on 1545 Progress: 1464 on 1545 Progress: 1465 on 1545 Progress: 1466 on 1545 Progress: 1467 on 1545 Progress: 1468 on 1545 Progress: 1469 on 1545 Progress: 1470 on 1545 Progress: 1471 on 1545 Progress: 1472 on 1545 Progress: 1473 on 1545 Progress: 1474 on 1545 Progress: 1475 on 1545 Progress: 1476 on 1545 Progress: 1477 on 1545 Progress: 1478 on 1545 Progress: 1479 on 1545 Progress: 1480 on 1545 Progress: 1481 on 1545 Progress: 1482 on 1545 Progress: 1483 on 1545 Progress: 1484 on 1545 Progress: 1485 on 1545 Progress: 1486 on 1545 Progress: 1487 on 1545 Progress: 1488 on 1545 Progress: 1489 on 1545 Progress: 1490 on 1545 Progress: 1491 on 1545 Progress: 1492 on 1545 Progress: 1493 on 1545 Progress: 1494 on 1545 Progress: 1495 on 1545 Progress: 1496 on 1545 Progress: 1497 on 1545 Progress: 1498 on 1545 Progress: 1499 on 1545 Progress: 1500 on 1545 Progress: 1501 on 1545 Progress: 1502 on 1545 Progress: 1503 on 1545 Progress: 1504 on 1545 Progress: 1505 on 1545 Progress: 1506 on 1545 Progress: 1507 on 1545 Progress: 1508 on 1545 Progress: 1509 on 1545 Progress: 1510 on 1545 Progress: 1511 on 1545 Progress: 1512 on 1545 Progress: 1513 on 1545 Progress: 1514 on 1545 Progress: 1515 on 1545 Progress: 1516 on 1545 Progress: 1517 on 1545 Progress: 1518 on 1545 Progress: 1519 on 1545 Progress: 1520 on 1545 Progress: 1521 on 1545 Progress: 1522 on 1545 Progress: 1523 on 1545 Progress: 1524 on 1545 Progress: 1525 on 1545 Progress: 1526 on 1545 Progress: 1527 on 1545 Progress: 1528 on 1545 Progress: 1529 on 1545 Progress: 1530 on 1545 Progress: 1531 on 1545 Progress: 1532 on 1545 Progress: 1533 on 1545 Progress: 1534 on 1545 Progress: 1535 on 1545 Progress: 1536 on 1545 Progress: 1537 on 1545 Progress: 1538 on 1545 Progress: 1539 on 1545 Progress: 1540 on 1545 Progress: 1541 on 1545 Progress: 1542 on 1545 Progress: 1543 on 1545 Progress: 1544 on 1545 Progress: 1545 on 1545
BN_wspoltworca <- BN_wspoltworca %>%
mutate(ZA_ADNOTACJE = ifelse(czy_nazwisko==FALSE|czy_imie==FALSE,paste("UWAGA! Konflikt w danych osobowych w polach 700 i 245. Porównaj pola współtórców w formularzu z polem BN: ",X245c,sep = ""),NA)) %>%
select(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,OS_OSOBA_ID,fo_symbol,fo_nazwa,funkcja,ZA_ADNOTACJE)
#7: opis współtwórców
opis_wspoltworcow <- BN_wspoltworca %>%
select(ZA_UWAGI,funkcja,OS_IMIE,OS_NAZWISKO) %>%
full_join(.,marc_field_245,by="ZA_UWAGI") %>%
filter(!is.na(OS_NAZWISKO)|(is.na(OS_NAZWISKO)&grepl("et al\\.",X245c))) %>%
mutate(jest_et_al = grepl("et al\\.",X245c),
OS_IMIE = ifelse(OS_IMIE=="*","",as.character(OS_IMIE)),
opis = ifelse(!is.na(OS_NAZWISKO),paste(funkcja,OS_IMIE, OS_NAZWISKO, sep = " "),""),
opis = str_replace_all(opis," +"," "),
opis = ifelse(opis==" ","",as.character(opis))) %>%
select(ZA_UWAGI,opis,jest_et_al) %>%
group_by(ZA_UWAGI) %>%
mutate(opis = paste(opis,collapse = ", "),
jest_et_al = paste(unique(jest_et_al),sep = "")) %>%
ungroup() %>%
unique() %>%
mutate(opis = ifelse(jest_et_al==TRUE&opis=="","et al.",
ifelse(jest_et_al,paste(opis,"et al.",sep = " "),opis))) %>%
select(ZA_UWAGI,opis)
#700
marc_field_700 <- data %>%
select(ZA_UWAGI,X700)%>%
filter(X700!="") %>%
mutate(X700=str_replace_all(X700,"(..\\$a)","|\\1"),
X700=str_replace_all(X700,"(^|\\|)","~\\1")) %>%
cSplit(.,"X700",sep = "~",direction = "long") %>%
filter(X700!="") %>%
mutate(X700=str_remove_all(X700,"^\\|")) %>%
mutate(indicator = str_replace_all(X700,"(^.*?)(\\$.*)","\\1")) %>%
filter(X700!="")
subfield_list<- str_extract_all(data$X700,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_700)[1]))
colnames(empty_table) <-subfield_list
marc_field_700<-cbind(marc_field_700,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_700$X700 <- str_replace(marc_field_700$X700,subfield_list_char[i],"|\\1")
}
Progress: 1 on 9 Progress: 2 on 9 Progress: 3 on 9 Progress: 4 on 9 Progress: 5 on 9 Progress: 6 on 9 Progress: 7 on 9 Progress: 8 on 9 Progress: 9 on 9
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_700[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_700$X700),str_replace_all(gsub(string,"\\3",marc_field_700$X700),"\\${2}.", "~"),NA)
}
Progress: 1 on 9 Progress: 2 on 9 Progress: 3 on 9 Progress: 4 on 9 Progress: 5 on 9 Progress: 6 on 9 Progress: 7 on 9 Progress: 8 on 9 Progress: 9 on 9
marc_field_700 <- marc_field_700 %>%
select(ZA_UWAGI,osoba = `$a`,funkcja = `$e`) %>%
filter(!is.na(funkcja)) %>%
mutate(osoba = str_remove(osoba,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)"),
OS_NAZWISKO = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\1"),as.character(osoba)),
OS_IMIE = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\3"),"*"),
funkcja_duza = str_to_lower(funkcja),
opis = paste(funkcja_duza,OS_IMIE,OS_NAZWISKO, sep = " "),
opis_duzy = paste(funkcja,OS_IMIE,OS_NAZWISKO, sep = " ")) %>%
select(ZA_UWAGI,opis,opis_duzy) %>%
group_by(ZA_UWAGI) %>%
mutate(opis = paste(opis,collapse = ". "),
opis_duzy = paste(opis_duzy,collapse = ". ")) %>%
ungroup() %>%
unique()
#opis współtwórców ze strefy odpowiedzialności 245
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,`$c`)
#porównanie opisu współtwórców z 245 i 700
wspoltworcy <- marc_field_700 %>%
full_join(.,marc_field_245,by="ZA_UWAGI") %>%
cSplit(.,"$c",sep = " ; ",direction = "long") %>%
#ograniczanie osób ze strefy odpowiedzialności
mutate(czy_mala = grepl(" [a-zęóąśłżźćń]|^[a-zęóąśłżźćń]|\\[[a-zęóąśłżźćń]",`$c`,ignore.case = FALSE)) %>%
filter(czy_mala==TRUE) %>%
select(-czy_mala) %>%
#mutate(`$c` = gsub("^(\\[){0,1}([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])","\\1\\U\\2",perl = TRUE,`$c`)) %>%
group_by(ZA_UWAGI) %>%
mutate(X245 = paste(`$c`, collapse = ", ")) %>%
select(-`$c`) %>%
unique() %>%
mutate(order_pbl = as.character(str_extract_all(opis,"(?<=^| |\\[|-)([A-ZAÁÀÂÃÄĂĀÅĄÆEÉÈÊËĚĒĖĘIÍÌÎÏĪĮIOÓÒÔÕÖŐØŒUÚÙÛÜŰŪůYÝCĆČçDĎĐĐGĢĞKĶLŁĻNŃÑŇŅŊRŘSŚŠŞSßTŤŦÞŢ8ZŻŹŽa-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])")),
order_pbl = str_replace_all(order_pbl,"(.*?\")(.)(\".*?.)", "\\2"),
order_bn = as.character(str_extract_all(X245,"(?<=^| |\\[|-)([A-ZAÁÀÂÃÄĂĀÅĄÆEÉÈÊËĚĒĖĘIÍÌÎÏĪĮIOÓÒÔÕÖŐØŒUÚÙÛÜŰŪůYÝCĆČçDĎĐĐGĢĞKĶLŁĻNŃÑŇŅŊRŘSŚŠŞSßTŤŦÞŢ8ZŻŹŽa-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])")),
order_bn = str_replace_all(order_bn,"(.*?\")(.)(\".*?.)", "\\2"),
X245 = str_remove(X245, "\\.$"),
X245 = str_remove(X245, "\\["),
X245 = str_remove(X245, "\\]"),
order_pbl = str_remove_all(order_pbl, "[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]"),
order_bn = str_remove_all(order_bn, "[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]"),
to_samo = order_pbl==order_bn,
X245 = gsub("(^[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(.*)","\\U\\1\\E\\2",perl = TRUE, X245)) %>%
left_join(.,za_jezyk_oryginalu,by="ZA_UWAGI") %>%
mutate(czy_pl = grepl("pol",ZA_JEZYK_ORYGINALU)|is.na(ZA_JEZYK_ORYGINALU),
decyzja = ifelse(to_samo==FALSE|czy_pl==FALSE,FALSE,TRUE))
za_opis_wspoltworcow <- wspoltworcy %>%
mutate(za_opis_wspoltworcow = ifelse(decyzja==TRUE,as.character(X245),paste(X245,opis_duzy,sep = "#"))) %>%
select(ZA_UWAGI,opis_duzy,za_opis_wspoltworcow) %>%
cSplit(.,"za_opis_wspoltworcow",sep = "#",direction = "wide") %>%
mutate(za_opis_wspoltworcow_2 = ifelse(is.na(za_opis_wspoltworcow_2),'',as.character(za_opis_wspoltworcow_2)),
to_samo = za_opis_wspoltworcow_1==za_opis_wspoltworcow_2) %>%
filter(to_samo==FALSE) %>%
group_by(ZA_UWAGI) %>%
mutate(za_opis_wspoltworcow = paste(za_opis_wspoltworcow_1,za_opis_wspoltworcow_2,sep = "#"),
za_opis_wspoltworcow = str_remove_all(za_opis_wspoltworcow,"\\#$")) %>%
select(ZA_UWAGI,za_opis_wspoltworcow)
opis_wspoltworcow <- opis_wspoltworcow %>%
filter(ZA_UWAGI %notin% za_opis_wspoltworcow$ZA_UWAGI) %>%
filter(!is.na(opis)) %>%
rename(za_opis_wspoltworcow = opis)
za_opis_wspoltworcow <- za_opis_wspoltworcow %>%
bind_rows(.,opis_wspoltworcow) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#8 wydanie
marc_field_250 <- data %>%
select(ZA_UWAGI,X250)%>%
filter(X250!="") %>%
mutate(X250=str_replace_all(X250,"(^|\\|)","~\\1")) %>%
cSplit(.,"X250",sep = "~",direction = "long") %>%
filter(X250!="") %>%
mutate(X250=str_remove_all(X250,"^\\|")) %>%
mutate(indicator = str_replace_all(X250,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X250,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_250)[1]))
colnames(empty_table) <-subfield_list
marc_field_250<-cbind(marc_field_250,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_250$X250 <- str_replace(marc_field_250$X250,subfield_list_char[i],"|\\1")
}
Progress: 1 on 2 Progress: 2 on 2
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_250[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_250$X250),str_replace_all(gsub(string,"\\3",marc_field_250$X250),"\\${2}.", "~"),NA)
}
Progress: 1 on 2 Progress: 2 on 2
za_wydanie <- marc_field_250 %>%
select(ZA_UWAGI, wydanie = `$a`) %>%
mutate(wydanie = str_remove(wydanie," \\/$")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#9: instytucja sprawcza
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
za_instytucja <- marc_field_245 %>%
select(ZA_UWAGI,X245c=`$c`) %>%
filter(!is.na(X245c)) %>%
mutate(instytucja = ifelse(grepl("\\;",X245c),str_replace_all(X245c, "(.*?)(\\;(?!.*\\;))( )+(.*?$)","\\4"),"")) %>%
left_join(.,BN_wspoltworca,by="ZA_UWAGI")
x <- 1:lengths(za_instytucja[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
za_instytucja$czy_nazwisko[i] <- grepl(za_instytucja$OS_NAZWISKO[i],za_instytucja$X245c[i])
za_instytucja$czy_imie[i] <- grepl(za_instytucja$OS_IMIE[i],za_instytucja$X245c[i])
}
Progress: 1 on 2502 Progress: 2 on 2502 Progress: 3 on 2502 Progress: 4 on 2502 Progress: 5 on 2502 Progress: 6 on 2502 Progress: 7 on 2502 Progress: 8 on 2502 Progress: 9 on 2502 Progress: 10 on 2502 Progress: 11 on 2502 Progress: 12 on 2502 Progress: 13 on 2502 Progress: 14 on 2502 Progress: 15 on 2502 Progress: 16 on 2502 Progress: 17 on 2502 Progress: 18 on 2502 Progress: 19 on 2502 Progress: 20 on 2502 Progress: 21 on 2502 Progress: 22 on 2502 Progress: 23 on 2502 Progress: 24 on 2502 Progress: 25 on 2502 Progress: 26 on 2502 Progress: 27 on 2502 Progress: 28 on 2502 Progress: 29 on 2502 Progress: 30 on 2502 Progress: 31 on 2502 Progress: 32 on 2502 Progress: 33 on 2502 Progress: 34 on 2502 Progress: 35 on 2502 Progress: 36 on 2502 Progress: 37 on 2502 Progress: 38 on 2502 Progress: 39 on 2502 Progress: 40 on 2502 Progress: 41 on 2502 Progress: 42 on 2502 Progress: 43 on 2502 Progress: 44 on 2502 Progress: 45 on 2502 Progress: 46 on 2502 Progress: 47 on 2502 Progress: 48 on 2502 Progress: 49 on 2502 Progress: 50 on 2502 Progress: 51 on 2502 Progress: 52 on 2502 Progress: 53 on 2502 Progress: 54 on 2502 Progress: 55 on 2502 Progress: 56 on 2502 Progress: 57 on 2502 Progress: 58 on 2502 Progress: 59 on 2502 Progress: 60 on 2502 Progress: 61 on 2502 Progress: 62 on 2502 Progress: 63 on 2502 Progress: 64 on 2502 Progress: 65 on 2502 Progress: 66 on 2502 Progress: 67 on 2502 Progress: 68 on 2502 Progress: 69 on 2502 Progress: 70 on 2502 Progress: 71 on 2502 Progress: 72 on 2502 Progress: 73 on 2502 Progress: 74 on 2502 Progress: 75 on 2502 Progress: 76 on 2502 Progress: 77 on 2502 Progress: 78 on 2502 Progress: 79 on 2502 Progress: 80 on 2502 Progress: 81 on 2502 Progress: 82 on 2502 Progress: 83 on 2502 Progress: 84 on 2502 Progress: 85 on 2502 Progress: 86 on 2502 Progress: 87 on 2502 Progress: 88 on 2502 Progress: 89 on 2502 Progress: 90 on 2502 Progress: 91 on 2502 Progress: 92 on 2502 Progress: 93 on 2502 Progress: 94 on 2502 Progress: 95 on 2502 Progress: 96 on 2502 Progress: 97 on 2502 Progress: 98 on 2502 Progress: 99 on 2502 Progress: 100 on 2502 Progress: 101 on 2502 Progress: 102 on 2502 Progress: 103 on 2502 Progress: 104 on 2502 Progress: 105 on 2502 Progress: 106 on 2502 Progress: 107 on 2502 Progress: 108 on 2502 Progress: 109 on 2502 Progress: 110 on 2502 Progress: 111 on 2502 Progress: 112 on 2502 Progress: 113 on 2502 Progress: 114 on 2502 Progress: 115 on 2502 Progress: 116 on 2502 Progress: 117 on 2502 Progress: 118 on 2502 Progress: 119 on 2502 Progress: 120 on 2502 Progress: 121 on 2502 Progress: 122 on 2502 Progress: 123 on 2502 Progress: 124 on 2502 Progress: 125 on 2502 Progress: 126 on 2502 Progress: 127 on 2502 Progress: 128 on 2502 Progress: 129 on 2502 Progress: 130 on 2502 Progress: 131 on 2502 Progress: 132 on 2502 Progress: 133 on 2502 Progress: 134 on 2502 Progress: 135 on 2502 Progress: 136 on 2502 Progress: 137 on 2502 Progress: 138 on 2502 Progress: 139 on 2502 Progress: 140 on 2502 Progress: 141 on 2502 Progress: 142 on 2502 Progress: 143 on 2502 Progress: 144 on 2502 Progress: 145 on 2502 Progress: 146 on 2502 Progress: 147 on 2502 Progress: 148 on 2502 Progress: 149 on 2502 Progress: 150 on 2502 Progress: 151 on 2502 Progress: 152 on 2502 Progress: 153 on 2502 Progress: 154 on 2502 Progress: 155 on 2502 Progress: 156 on 2502 Progress: 157 on 2502 Progress: 158 on 2502 Progress: 159 on 2502 Progress: 160 on 2502 Progress: 161 on 2502 Progress: 162 on 2502 Progress: 163 on 2502 Progress: 164 on 2502 Progress: 165 on 2502 Progress: 166 on 2502 Progress: 167 on 2502 Progress: 168 on 2502 Progress: 169 on 2502 Progress: 170 on 2502 Progress: 171 on 2502 Progress: 172 on 2502 Progress: 173 on 2502 Progress: 174 on 2502 Progress: 175 on 2502 Progress: 176 on 2502 Progress: 177 on 2502 Progress: 178 on 2502 Progress: 179 on 2502 Progress: 180 on 2502 Progress: 181 on 2502 Progress: 182 on 2502 Progress: 183 on 2502 Progress: 184 on 2502 Progress: 185 on 2502 Progress: 186 on 2502 Progress: 187 on 2502 Progress: 188 on 2502 Progress: 189 on 2502 Progress: 190 on 2502 Progress: 191 on 2502 Progress: 192 on 2502 Progress: 193 on 2502 Progress: 194 on 2502 Progress: 195 on 2502 Progress: 196 on 2502 Progress: 197 on 2502 Progress: 198 on 2502 Progress: 199 on 2502 Progress: 200 on 2502 Progress: 201 on 2502 Progress: 202 on 2502 Progress: 203 on 2502 Progress: 204 on 2502 Progress: 205 on 2502 Progress: 206 on 2502 Progress: 207 on 2502 Progress: 208 on 2502 Progress: 209 on 2502 Progress: 210 on 2502 Progress: 211 on 2502 Progress: 212 on 2502 Progress: 213 on 2502 Progress: 214 on 2502 Progress: 215 on 2502 Progress: 216 on 2502 Progress: 217 on 2502 Progress: 218 on 2502 Progress: 219 on 2502 Progress: 220 on 2502 Progress: 221 on 2502 Progress: 222 on 2502 Progress: 223 on 2502 Progress: 224 on 2502 Progress: 225 on 2502 Progress: 226 on 2502 Progress: 227 on 2502 Progress: 228 on 2502 Progress: 229 on 2502 Progress: 230 on 2502 Progress: 231 on 2502 Progress: 232 on 2502 Progress: 233 on 2502 Progress: 234 on 2502 Progress: 235 on 2502 Progress: 236 on 2502 Progress: 237 on 2502 Progress: 238 on 2502 Progress: 239 on 2502 Progress: 240 on 2502 Progress: 241 on 2502 Progress: 242 on 2502 Progress: 243 on 2502 Progress: 244 on 2502 Progress: 245 on 2502 Progress: 246 on 2502 Progress: 247 on 2502 Progress: 248 on 2502 Progress: 249 on 2502 Progress: 250 on 2502 Progress: 251 on 2502 Progress: 252 on 2502 Progress: 253 on 2502 Progress: 254 on 2502 Progress: 255 on 2502 Progress: 256 on 2502 Progress: 257 on 2502 Progress: 258 on 2502 Progress: 259 on 2502 Progress: 260 on 2502 Progress: 261 on 2502 Progress: 262 on 2502 Progress: 263 on 2502 Progress: 264 on 2502 Progress: 265 on 2502 Progress: 266 on 2502 Progress: 267 on 2502 Progress: 268 on 2502 Progress: 269 on 2502 Progress: 270 on 2502 Progress: 271 on 2502 Progress: 272 on 2502 Progress: 273 on 2502 Progress: 274 on 2502 Progress: 275 on 2502 Progress: 276 on 2502 Progress: 277 on 2502 Progress: 278 on 2502 Progress: 279 on 2502 Progress: 280 on 2502 Progress: 281 on 2502 Progress: 282 on 2502 Progress: 283 on 2502 Progress: 284 on 2502 Progress: 285 on 2502 Progress: 286 on 2502 Progress: 287 on 2502 Progress: 288 on 2502 Progress: 289 on 2502 Progress: 290 on 2502 Progress: 291 on 2502 Progress: 292 on 2502 Progress: 293 on 2502 Progress: 294 on 2502 Progress: 295 on 2502 Progress: 296 on 2502 Progress: 297 on 2502 Progress: 298 on 2502 Progress: 299 on 2502 Progress: 300 on 2502 Progress: 301 on 2502 Progress: 302 on 2502 Progress: 303 on 2502 Progress: 304 on 2502 Progress: 305 on 2502 Progress: 306 on 2502 Progress: 307 on 2502 Progress: 308 on 2502 Progress: 309 on 2502 Progress: 310 on 2502 Progress: 311 on 2502 Progress: 312 on 2502 Progress: 313 on 2502 Progress: 314 on 2502 Progress: 315 on 2502 Progress: 316 on 2502 Progress: 317 on 2502 Progress: 318 on 2502 Progress: 319 on 2502 Progress: 320 on 2502 Progress: 321 on 2502 Progress: 322 on 2502 Progress: 323 on 2502 Progress: 324 on 2502 Progress: 325 on 2502 Progress: 326 on 2502 Progress: 327 on 2502 Progress: 328 on 2502 Progress: 329 on 2502 Progress: 330 on 2502 Progress: 331 on 2502 Progress: 332 on 2502 Progress: 333 on 2502 Progress: 334 on 2502 Progress: 335 on 2502 Progress: 336 on 2502 Progress: 337 on 2502 Progress: 338 on 2502 Progress: 339 on 2502 Progress: 340 on 2502 Progress: 341 on 2502 Progress: 342 on 2502 Progress: 343 on 2502 Progress: 344 on 2502 Progress: 345 on 2502 Progress: 346 on 2502 Progress: 347 on 2502 Progress: 348 on 2502 Progress: 349 on 2502 Progress: 350 on 2502 Progress: 351 on 2502 Progress: 352 on 2502 Progress: 353 on 2502 Progress: 354 on 2502 Progress: 355 on 2502 Progress: 356 on 2502 Progress: 357 on 2502 Progress: 358 on 2502 Progress: 359 on 2502 Progress: 360 on 2502 Progress: 361 on 2502 Progress: 362 on 2502 Progress: 363 on 2502 Progress: 364 on 2502 Progress: 365 on 2502 Progress: 366 on 2502 Progress: 367 on 2502 Progress: 368 on 2502 Progress: 369 on 2502 Progress: 370 on 2502 Progress: 371 on 2502 Progress: 372 on 2502 Progress: 373 on 2502 Progress: 374 on 2502 Progress: 375 on 2502 Progress: 376 on 2502 Progress: 377 on 2502 Progress: 378 on 2502 Progress: 379 on 2502 Progress: 380 on 2502 Progress: 381 on 2502 Progress: 382 on 2502 Progress: 383 on 2502 Progress: 384 on 2502 Progress: 385 on 2502 Progress: 386 on 2502 Progress: 387 on 2502 Progress: 388 on 2502 Progress: 389 on 2502 Progress: 390 on 2502 Progress: 391 on 2502 Progress: 392 on 2502 Progress: 393 on 2502 Progress: 394 on 2502 Progress: 395 on 2502 Progress: 396 on 2502 Progress: 397 on 2502 Progress: 398 on 2502 Progress: 399 on 2502 Progress: 400 on 2502 Progress: 401 on 2502 Progress: 402 on 2502 Progress: 403 on 2502 Progress: 404 on 2502 Progress: 405 on 2502 Progress: 406 on 2502 Progress: 407 on 2502 Progress: 408 on 2502 Progress: 409 on 2502 Progress: 410 on 2502 Progress: 411 on 2502 Progress: 412 on 2502 Progress: 413 on 2502 Progress: 414 on 2502 Progress: 415 on 2502 Progress: 416 on 2502 Progress: 417 on 2502 Progress: 418 on 2502 Progress: 419 on 2502 Progress: 420 on 2502 Progress: 421 on 2502 Progress: 422 on 2502 Progress: 423 on 2502 Progress: 424 on 2502 Progress: 425 on 2502 Progress: 426 on 2502 Progress: 427 on 2502 Progress: 428 on 2502 Progress: 429 on 2502 Progress: 430 on 2502 Progress: 431 on 2502 Progress: 432 on 2502 Progress: 433 on 2502 Progress: 434 on 2502 Progress: 435 on 2502 Progress: 436 on 2502 Progress: 437 on 2502 Progress: 438 on 2502 Progress: 439 on 2502 Progress: 440 on 2502 Progress: 441 on 2502 Progress: 442 on 2502 Progress: 443 on 2502 Progress: 444 on 2502 Progress: 445 on 2502 Progress: 446 on 2502 Progress: 447 on 2502 Progress: 448 on 2502 Progress: 449 on 2502 Progress: 450 on 2502 Progress: 451 on 2502 Progress: 452 on 2502 Progress: 453 on 2502 Progress: 454 on 2502 Progress: 455 on 2502 Progress: 456 on 2502 Progress: 457 on 2502 Progress: 458 on 2502 Progress: 459 on 2502 Progress: 460 on 2502 Progress: 461 on 2502 Progress: 462 on 2502 Progress: 463 on 2502 Progress: 464 on 2502 Progress: 465 on 2502 Progress: 466 on 2502 Progress: 467 on 2502 Progress: 468 on 2502 Progress: 469 on 2502 Progress: 470 on 2502 Progress: 471 on 2502 Progress: 472 on 2502 Progress: 473 on 2502 Progress: 474 on 2502 Progress: 475 on 2502 Progress: 476 on 2502 Progress: 477 on 2502 Progress: 478 on 2502 Progress: 479 on 2502 Progress: 480 on 2502 Progress: 481 on 2502 Progress: 482 on 2502 Progress: 483 on 2502 Progress: 484 on 2502 Progress: 485 on 2502 Progress: 486 on 2502 Progress: 487 on 2502 Progress: 488 on 2502 Progress: 489 on 2502 Progress: 490 on 2502 Progress: 491 on 2502 Progress: 492 on 2502 Progress: 493 on 2502 Progress: 494 on 2502 Progress: 495 on 2502 Progress: 496 on 2502 Progress: 497 on 2502 Progress: 498 on 2502 Progress: 499 on 2502 Progress: 500 on 2502 Progress: 501 on 2502 Progress: 502 on 2502 Progress: 503 on 2502 Progress: 504 on 2502 Progress: 505 on 2502 Progress: 506 on 2502 Progress: 507 on 2502 Progress: 508 on 2502 Progress: 509 on 2502 Progress: 510 on 2502 Progress: 511 on 2502 Progress: 512 on 2502 Progress: 513 on 2502 Progress: 514 on 2502 Progress: 515 on 2502 Progress: 516 on 2502 Progress: 517 on 2502 Progress: 518 on 2502 Progress: 519 on 2502 Progress: 520 on 2502 Progress: 521 on 2502 Progress: 522 on 2502 Progress: 523 on 2502 Progress: 524 on 2502 Progress: 525 on 2502 Progress: 526 on 2502 Progress: 527 on 2502 Progress: 528 on 2502 Progress: 529 on 2502 Progress: 530 on 2502 Progress: 531 on 2502 Progress: 532 on 2502 Progress: 533 on 2502 Progress: 534 on 2502 Progress: 535 on 2502 Progress: 536 on 2502 Progress: 537 on 2502 Progress: 538 on 2502 Progress: 539 on 2502 Progress: 540 on 2502 Progress: 541 on 2502 Progress: 542 on 2502 Progress: 543 on 2502 Progress: 544 on 2502 Progress: 545 on 2502 Progress: 546 on 2502 Progress: 547 on 2502 Progress: 548 on 2502 Progress: 549 on 2502 Progress: 550 on 2502 Progress: 551 on 2502 Progress: 552 on 2502 Progress: 553 on 2502 Progress: 554 on 2502 Progress: 555 on 2502 Progress: 556 on 2502 Progress: 557 on 2502 Progress: 558 on 2502 Progress: 559 on 2502 Progress: 560 on 2502 Progress: 561 on 2502 Progress: 562 on 2502 Progress: 563 on 2502 Progress: 564 on 2502 Progress: 565 on 2502 Progress: 566 on 2502 Progress: 567 on 2502 Progress: 568 on 2502 Progress: 569 on 2502 Progress: 570 on 2502 Progress: 571 on 2502 Progress: 572 on 2502 Progress: 573 on 2502 Progress: 574 on 2502 Progress: 575 on 2502 Progress: 576 on 2502 Progress: 577 on 2502 Progress: 578 on 2502 Progress: 579 on 2502 Progress: 580 on 2502 Progress: 581 on 2502 Progress: 582 on 2502 Progress: 583 on 2502 Progress: 584 on 2502 Progress: 585 on 2502 Progress: 586 on 2502 Progress: 587 on 2502 Progress: 588 on 2502 Progress: 589 on 2502 Progress: 590 on 2502 Progress: 591 on 2502 Progress: 592 on 2502 Progress: 593 on 2502 Progress: 594 on 2502 Progress: 595 on 2502 Progress: 596 on 2502 Progress: 597 on 2502 Progress: 598 on 2502 Progress: 599 on 2502 Progress: 600 on 2502 Progress: 601 on 2502 Progress: 602 on 2502 Progress: 603 on 2502 Progress: 604 on 2502 Progress: 605 on 2502 Progress: 606 on 2502 Progress: 607 on 2502 Progress: 608 on 2502 Progress: 609 on 2502 Progress: 610 on 2502 Progress: 611 on 2502 Progress: 612 on 2502 Progress: 613 on 2502 Progress: 614 on 2502 Progress: 615 on 2502 Progress: 616 on 2502 Progress: 617 on 2502 Progress: 618 on 2502 Progress: 619 on 2502 Progress: 620 on 2502 Progress: 621 on 2502 Progress: 622 on 2502 Progress: 623 on 2502 Progress: 624 on 2502 Progress: 625 on 2502 Progress: 626 on 2502 Progress: 627 on 2502 Progress: 628 on 2502 Progress: 629 on 2502 Progress: 630 on 2502 Progress: 631 on 2502 Progress: 632 on 2502 Progress: 633 on 2502 Progress: 634 on 2502 Progress: 635 on 2502 Progress: 636 on 2502 Progress: 637 on 2502 Progress: 638 on 2502 Progress: 639 on 2502 Progress: 640 on 2502 Progress: 641 on 2502 Progress: 642 on 2502 Progress: 643 on 2502 Progress: 644 on 2502 Progress: 645 on 2502 Progress: 646 on 2502 Progress: 647 on 2502 Progress: 648 on 2502 Progress: 649 on 2502 Progress: 650 on 2502 Progress: 651 on 2502 Progress: 652 on 2502 Progress: 653 on 2502 Progress: 654 on 2502 Progress: 655 on 2502 Progress: 656 on 2502 Progress: 657 on 2502 Progress: 658 on 2502 Progress: 659 on 2502 Progress: 660 on 2502 Progress: 661 on 2502 Progress: 662 on 2502 Progress: 663 on 2502 Progress: 664 on 2502 Progress: 665 on 2502 Progress: 666 on 2502 Progress: 667 on 2502 Progress: 668 on 2502 Progress: 669 on 2502 Progress: 670 on 2502 Progress: 671 on 2502 Progress: 672 on 2502 Progress: 673 on 2502 Progress: 674 on 2502 Progress: 675 on 2502 Progress: 676 on 2502 Progress: 677 on 2502 Progress: 678 on 2502 Progress: 679 on 2502 Progress: 680 on 2502 Progress: 681 on 2502 Progress: 682 on 2502 Progress: 683 on 2502 Progress: 684 on 2502 Progress: 685 on 2502 Progress: 686 on 2502 Progress: 687 on 2502 Progress: 688 on 2502 Progress: 689 on 2502 Progress: 690 on 2502 Progress: 691 on 2502 Progress: 692 on 2502 Progress: 693 on 2502 Progress: 694 on 2502 Progress: 695 on 2502 Progress: 696 on 2502 Progress: 697 on 2502 Progress: 698 on 2502 Progress: 699 on 2502 Progress: 700 on 2502 Progress: 701 on 2502 Progress: 702 on 2502 Progress: 703 on 2502 Progress: 704 on 2502 Progress: 705 on 2502 Progress: 706 on 2502 Progress: 707 on 2502 Progress: 708 on 2502 Progress: 709 on 2502 Progress: 710 on 2502 Progress: 711 on 2502 Progress: 712 on 2502 Progress: 713 on 2502 Progress: 714 on 2502 Progress: 715 on 2502 Progress: 716 on 2502 Progress: 717 on 2502 Progress: 718 on 2502 Progress: 719 on 2502 Progress: 720 on 2502 Progress: 721 on 2502 Progress: 722 on 2502 Progress: 723 on 2502 Progress: 724 on 2502 Progress: 725 on 2502 Progress: 726 on 2502 Progress: 727 on 2502 Progress: 728 on 2502 Progress: 729 on 2502 Progress: 730 on 2502 Progress: 731 on 2502 Progress: 732 on 2502 Progress: 733 on 2502 Progress: 734 on 2502 Progress: 735 on 2502 Progress: 736 on 2502 Progress: 737 on 2502 Progress: 738 on 2502 Progress: 739 on 2502 Progress: 740 on 2502 Progress: 741 on 2502 Progress: 742 on 2502 Progress: 743 on 2502 Progress: 744 on 2502 Progress: 745 on 2502 Progress: 746 on 2502 Progress: 747 on 2502 Progress: 748 on 2502 Progress: 749 on 2502 Progress: 750 on 2502 Progress: 751 on 2502 Progress: 752 on 2502 Progress: 753 on 2502 Progress: 754 on 2502 Progress: 755 on 2502 Progress: 756 on 2502 Progress: 757 on 2502 Progress: 758 on 2502 Progress: 759 on 2502 Progress: 760 on 2502 Progress: 761 on 2502 Progress: 762 on 2502 Progress: 763 on 2502 Progress: 764 on 2502 Progress: 765 on 2502 Progress: 766 on 2502 Progress: 767 on 2502 Progress: 768 on 2502 Progress: 769 on 2502 Progress: 770 on 2502 Progress: 771 on 2502 Progress: 772 on 2502 Progress: 773 on 2502 Progress: 774 on 2502 Progress: 775 on 2502 Progress: 776 on 2502 Progress: 777 on 2502 Progress: 778 on 2502 Progress: 779 on 2502 Progress: 780 on 2502 Progress: 781 on 2502 Progress: 782 on 2502 Progress: 783 on 2502 Progress: 784 on 2502 Progress: 785 on 2502 Progress: 786 on 2502 Progress: 787 on 2502 Progress: 788 on 2502 Progress: 789 on 2502 Progress: 790 on 2502 Progress: 791 on 2502 Progress: 792 on 2502 Progress: 793 on 2502 Progress: 794 on 2502 Progress: 795 on 2502 Progress: 796 on 2502 Progress: 797 on 2502 Progress: 798 on 2502 Progress: 799 on 2502 Progress: 800 on 2502 Progress: 801 on 2502 Progress: 802 on 2502 Progress: 803 on 2502 Progress: 804 on 2502 Progress: 805 on 2502 Progress: 806 on 2502 Progress: 807 on 2502 Progress: 808 on 2502 Progress: 809 on 2502 Progress: 810 on 2502 Progress: 811 on 2502 Progress: 812 on 2502 Progress: 813 on 2502 Progress: 814 on 2502 Progress: 815 on 2502 Progress: 816 on 2502 Progress: 817 on 2502 Progress: 818 on 2502 Progress: 819 on 2502 Progress: 820 on 2502 Progress: 821 on 2502 Progress: 822 on 2502 Progress: 823 on 2502 Progress: 824 on 2502 Progress: 825 on 2502 Progress: 826 on 2502 Progress: 827 on 2502 Progress: 828 on 2502 Progress: 829 on 2502 Progress: 830 on 2502 Progress: 831 on 2502 Progress: 832 on 2502 Progress: 833 on 2502 Progress: 834 on 2502 Progress: 835 on 2502 Progress: 836 on 2502 Progress: 837 on 2502 Progress: 838 on 2502 Progress: 839 on 2502 Progress: 840 on 2502 Progress: 841 on 2502 Progress: 842 on 2502 Progress: 843 on 2502 Progress: 844 on 2502 Progress: 845 on 2502 Progress: 846 on 2502 Progress: 847 on 2502 Progress: 848 on 2502 Progress: 849 on 2502 Progress: 850 on 2502 Progress: 851 on 2502 Progress: 852 on 2502 Progress: 853 on 2502 Progress: 854 on 2502 Progress: 855 on 2502 Progress: 856 on 2502 Progress: 857 on 2502 Progress: 858 on 2502 Progress: 859 on 2502 Progress: 860 on 2502 Progress: 861 on 2502 Progress: 862 on 2502 Progress: 863 on 2502 Progress: 864 on 2502 Progress: 865 on 2502 Progress: 866 on 2502 Progress: 867 on 2502 Progress: 868 on 2502 Progress: 869 on 2502 Progress: 870 on 2502 Progress: 871 on 2502 Progress: 872 on 2502 Progress: 873 on 2502 Progress: 874 on 2502 Progress: 875 on 2502 Progress: 876 on 2502 Progress: 877 on 2502 Progress: 878 on 2502 Progress: 879 on 2502 Progress: 880 on 2502 Progress: 881 on 2502 Progress: 882 on 2502 Progress: 883 on 2502 Progress: 884 on 2502 Progress: 885 on 2502 Progress: 886 on 2502 Progress: 887 on 2502 Progress: 888 on 2502 Progress: 889 on 2502 Progress: 890 on 2502 Progress: 891 on 2502 Progress: 892 on 2502 Progress: 893 on 2502 Progress: 894 on 2502 Progress: 895 on 2502 Progress: 896 on 2502 Progress: 897 on 2502 Progress: 898 on 2502 Progress: 899 on 2502 Progress: 900 on 2502 Progress: 901 on 2502 Progress: 902 on 2502 Progress: 903 on 2502 Progress: 904 on 2502 Progress: 905 on 2502 Progress: 906 on 2502 Progress: 907 on 2502 Progress: 908 on 2502 Progress: 909 on 2502 Progress: 910 on 2502 Progress: 911 on 2502 Progress: 912 on 2502 Progress: 913 on 2502 Progress: 914 on 2502 Progress: 915 on 2502 Progress: 916 on 2502 Progress: 917 on 2502 Progress: 918 on 2502 Progress: 919 on 2502 Progress: 920 on 2502 Progress: 921 on 2502 Progress: 922 on 2502 Progress: 923 on 2502 Progress: 924 on 2502 Progress: 925 on 2502 Progress: 926 on 2502 Progress: 927 on 2502 Progress: 928 on 2502 Progress: 929 on 2502 Progress: 930 on 2502 Progress: 931 on 2502 Progress: 932 on 2502 Progress: 933 on 2502 Progress: 934 on 2502 Progress: 935 on 2502 Progress: 936 on 2502 Progress: 937 on 2502 Progress: 938 on 2502 Progress: 939 on 2502 Progress: 940 on 2502 Progress: 941 on 2502 Progress: 942 on 2502 Progress: 943 on 2502 Progress: 944 on 2502 Progress: 945 on 2502 Progress: 946 on 2502 Progress: 947 on 2502 Progress: 948 on 2502 Progress: 949 on 2502 Progress: 950 on 2502 Progress: 951 on 2502 Progress: 952 on 2502 Progress: 953 on 2502 Progress: 954 on 2502 Progress: 955 on 2502 Progress: 956 on 2502 Progress: 957 on 2502 Progress: 958 on 2502 Progress: 959 on 2502 Progress: 960 on 2502 Progress: 961 on 2502 Progress: 962 on 2502 Progress: 963 on 2502 Progress: 964 on 2502 Progress: 965 on 2502 Progress: 966 on 2502 Progress: 967 on 2502 Progress: 968 on 2502 Progress: 969 on 2502 Progress: 970 on 2502 Progress: 971 on 2502 Progress: 972 on 2502 Progress: 973 on 2502 Progress: 974 on 2502 Progress: 975 on 2502 Progress: 976 on 2502 Progress: 977 on 2502 Progress: 978 on 2502 Progress: 979 on 2502 Progress: 980 on 2502 Progress: 981 on 2502 Progress: 982 on 2502 Progress: 983 on 2502 Progress: 984 on 2502 Progress: 985 on 2502 Progress: 986 on 2502 Progress: 987 on 2502 Progress: 988 on 2502 Progress: 989 on 2502 Progress: 990 on 2502 Progress: 991 on 2502 Progress: 992 on 2502 Progress: 993 on 2502 Progress: 994 on 2502 Progress: 995 on 2502 Progress: 996 on 2502 Progress: 997 on 2502 Progress: 998 on 2502 Progress: 999 on 2502 Progress: 1000 on 2502 Progress: 1001 on 2502 Progress: 1002 on 2502 Progress: 1003 on 2502 Progress: 1004 on 2502 Progress: 1005 on 2502 Progress: 1006 on 2502 Progress: 1007 on 2502 Progress: 1008 on 2502 Progress: 1009 on 2502 Progress: 1010 on 2502 Progress: 1011 on 2502 Progress: 1012 on 2502 Progress: 1013 on 2502 Progress: 1014 on 2502 Progress: 1015 on 2502 Progress: 1016 on 2502 Progress: 1017 on 2502 Progress: 1018 on 2502 Progress: 1019 on 2502 Progress: 1020 on 2502 Progress: 1021 on 2502 Progress: 1022 on 2502 Progress: 1023 on 2502 Progress: 1024 on 2502 Progress: 1025 on 2502 Progress: 1026 on 2502 Progress: 1027 on 2502 Progress: 1028 on 2502 Progress: 1029 on 2502 Progress: 1030 on 2502 Progress: 1031 on 2502 Progress: 1032 on 2502 Progress: 1033 on 2502 Progress: 1034 on 2502 Progress: 1035 on 2502 Progress: 1036 on 2502 Progress: 1037 on 2502 Progress: 1038 on 2502 Progress: 1039 on 2502 Progress: 1040 on 2502 Progress: 1041 on 2502 Progress: 1042 on 2502 Progress: 1043 on 2502 Progress: 1044 on 2502 Progress: 1045 on 2502 Progress: 1046 on 2502 Progress: 1047 on 2502 Progress: 1048 on 2502 Progress: 1049 on 2502 Progress: 1050 on 2502 Progress: 1051 on 2502 Progress: 1052 on 2502 Progress: 1053 on 2502 Progress: 1054 on 2502 Progress: 1055 on 2502 Progress: 1056 on 2502 Progress: 1057 on 2502 Progress: 1058 on 2502 Progress: 1059 on 2502 Progress: 1060 on 2502 Progress: 1061 on 2502 Progress: 1062 on 2502 Progress: 1063 on 2502 Progress: 1064 on 2502 Progress: 1065 on 2502 Progress: 1066 on 2502 Progress: 1067 on 2502 Progress: 1068 on 2502 Progress: 1069 on 2502 Progress: 1070 on 2502 Progress: 1071 on 2502 Progress: 1072 on 2502 Progress: 1073 on 2502 Progress: 1074 on 2502 Progress: 1075 on 2502 Progress: 1076 on 2502 Progress: 1077 on 2502 Progress: 1078 on 2502 Progress: 1079 on 2502 Progress: 1080 on 2502 Progress: 1081 on 2502 Progress: 1082 on 2502 Progress: 1083 on 2502 Progress: 1084 on 2502 Progress: 1085 on 2502 Progress: 1086 on 2502 Progress: 1087 on 2502 Progress: 1088 on 2502 Progress: 1089 on 2502 Progress: 1090 on 2502 Progress: 1091 on 2502 Progress: 1092 on 2502 Progress: 1093 on 2502 Progress: 1094 on 2502 Progress: 1095 on 2502 Progress: 1096 on 2502 Progress: 1097 on 2502 Progress: 1098 on 2502 Progress: 1099 on 2502 Progress: 1100 on 2502 Progress: 1101 on 2502 Progress: 1102 on 2502 Progress: 1103 on 2502 Progress: 1104 on 2502 Progress: 1105 on 2502 Progress: 1106 on 2502 Progress: 1107 on 2502 Progress: 1108 on 2502 Progress: 1109 on 2502 Progress: 1110 on 2502 Progress: 1111 on 2502 Progress: 1112 on 2502 Progress: 1113 on 2502 Progress: 1114 on 2502 Progress: 1115 on 2502 Progress: 1116 on 2502 Progress: 1117 on 2502 Progress: 1118 on 2502 Progress: 1119 on 2502 Progress: 1120 on 2502 Progress: 1121 on 2502 Progress: 1122 on 2502 Progress: 1123 on 2502 Progress: 1124 on 2502 Progress: 1125 on 2502 Progress: 1126 on 2502 Progress: 1127 on 2502 Progress: 1128 on 2502 Progress: 1129 on 2502 Progress: 1130 on 2502 Progress: 1131 on 2502 Progress: 1132 on 2502 Progress: 1133 on 2502 Progress: 1134 on 2502 Progress: 1135 on 2502 Progress: 1136 on 2502 Progress: 1137 on 2502 Progress: 1138 on 2502 Progress: 1139 on 2502 Progress: 1140 on 2502 Progress: 1141 on 2502 Progress: 1142 on 2502 Progress: 1143 on 2502 Progress: 1144 on 2502 Progress: 1145 on 2502 Progress: 1146 on 2502 Progress: 1147 on 2502 Progress: 1148 on 2502 Progress: 1149 on 2502 Progress: 1150 on 2502 Progress: 1151 on 2502 Progress: 1152 on 2502 Progress: 1153 on 2502 Progress: 1154 on 2502 Progress: 1155 on 2502 Progress: 1156 on 2502 Progress: 1157 on 2502 Progress: 1158 on 2502 Progress: 1159 on 2502 Progress: 1160 on 2502 Progress: 1161 on 2502 Progress: 1162 on 2502 Progress: 1163 on 2502 Progress: 1164 on 2502 Progress: 1165 on 2502 Progress: 1166 on 2502 Progress: 1167 on 2502 Progress: 1168 on 2502 Progress: 1169 on 2502 Progress: 1170 on 2502 Progress: 1171 on 2502 Progress: 1172 on 2502 Progress: 1173 on 2502 Progress: 1174 on 2502 Progress: 1175 on 2502 Progress: 1176 on 2502 Progress: 1177 on 2502 Progress: 1178 on 2502 Progress: 1179 on 2502 Progress: 1180 on 2502 Progress: 1181 on 2502 Progress: 1182 on 2502 Progress: 1183 on 2502 Progress: 1184 on 2502 Progress: 1185 on 2502 Progress: 1186 on 2502 Progress: 1187 on 2502 Progress: 1188 on 2502 Progress: 1189 on 2502 Progress: 1190 on 2502 Progress: 1191 on 2502 Progress: 1192 on 2502 Progress: 1193 on 2502 Progress: 1194 on 2502 Progress: 1195 on 2502 Progress: 1196 on 2502 Progress: 1197 on 2502 Progress: 1198 on 2502 Progress: 1199 on 2502 Progress: 1200 on 2502 Progress: 1201 on 2502 Progress: 1202 on 2502 Progress: 1203 on 2502 Progress: 1204 on 2502 Progress: 1205 on 2502 Progress: 1206 on 2502 Progress: 1207 on 2502 Progress: 1208 on 2502 Progress: 1209 on 2502 Progress: 1210 on 2502 Progress: 1211 on 2502 Progress: 1212 on 2502 Progress: 1213 on 2502 Progress: 1214 on 2502 Progress: 1215 on 2502 Progress: 1216 on 2502 Progress: 1217 on 2502 Progress: 1218 on 2502 Progress: 1219 on 2502 Progress: 1220 on 2502 Progress: 1221 on 2502 Progress: 1222 on 2502 Progress: 1223 on 2502 Progress: 1224 on 2502 Progress: 1225 on 2502 Progress: 1226 on 2502 Progress: 1227 on 2502 Progress: 1228 on 2502 Progress: 1229 on 2502 Progress: 1230 on 2502 Progress: 1231 on 2502 Progress: 1232 on 2502 Progress: 1233 on 2502 Progress: 1234 on 2502 Progress: 1235 on 2502 Progress: 1236 on 2502 Progress: 1237 on 2502 Progress: 1238 on 2502 Progress: 1239 on 2502 Progress: 1240 on 2502 Progress: 1241 on 2502 Progress: 1242 on 2502 Progress: 1243 on 2502 Progress: 1244 on 2502 Progress: 1245 on 2502 Progress: 1246 on 2502 Progress: 1247 on 2502 Progress: 1248 on 2502 Progress: 1249 on 2502 Progress: 1250 on 2502 Progress: 1251 on 2502 Progress: 1252 on 2502 Progress: 1253 on 2502 Progress: 1254 on 2502 Progress: 1255 on 2502 Progress: 1256 on 2502 Progress: 1257 on 2502 Progress: 1258 on 2502 Progress: 1259 on 2502 Progress: 1260 on 2502 Progress: 1261 on 2502 Progress: 1262 on 2502 Progress: 1263 on 2502 Progress: 1264 on 2502 Progress: 1265 on 2502 Progress: 1266 on 2502 Progress: 1267 on 2502 Progress: 1268 on 2502 Progress: 1269 on 2502 Progress: 1270 on 2502 Progress: 1271 on 2502 Progress: 1272 on 2502 Progress: 1273 on 2502 Progress: 1274 on 2502 Progress: 1275 on 2502 Progress: 1276 on 2502 Progress: 1277 on 2502 Progress: 1278 on 2502 Progress: 1279 on 2502 Progress: 1280 on 2502 Progress: 1281 on 2502 Progress: 1282 on 2502 Progress: 1283 on 2502 Progress: 1284 on 2502 Progress: 1285 on 2502 Progress: 1286 on 2502 Progress: 1287 on 2502 Progress: 1288 on 2502 Progress: 1289 on 2502 Progress: 1290 on 2502 Progress: 1291 on 2502 Progress: 1292 on 2502 Progress: 1293 on 2502 Progress: 1294 on 2502 Progress: 1295 on 2502 Progress: 1296 on 2502 Progress: 1297 on 2502 Progress: 1298 on 2502 Progress: 1299 on 2502 Progress: 1300 on 2502 Progress: 1301 on 2502 Progress: 1302 on 2502 Progress: 1303 on 2502 Progress: 1304 on 2502 Progress: 1305 on 2502 Progress: 1306 on 2502 Progress: 1307 on 2502 Progress: 1308 on 2502 Progress: 1309 on 2502 Progress: 1310 on 2502 Progress: 1311 on 2502 Progress: 1312 on 2502 Progress: 1313 on 2502 Progress: 1314 on 2502 Progress: 1315 on 2502 Progress: 1316 on 2502 Progress: 1317 on 2502 Progress: 1318 on 2502 Progress: 1319 on 2502 Progress: 1320 on 2502 Progress: 1321 on 2502 Progress: 1322 on 2502 Progress: 1323 on 2502 Progress: 1324 on 2502 Progress: 1325 on 2502 Progress: 1326 on 2502 Progress: 1327 on 2502 Progress: 1328 on 2502 Progress: 1329 on 2502 Progress: 1330 on 2502 Progress: 1331 on 2502 Progress: 1332 on 2502 Progress: 1333 on 2502 Progress: 1334 on 2502 Progress: 1335 on 2502 Progress: 1336 on 2502 Progress: 1337 on 2502 Progress: 1338 on 2502 Progress: 1339 on 2502 Progress: 1340 on 2502 Progress: 1341 on 2502 Progress: 1342 on 2502 Progress: 1343 on 2502 Progress: 1344 on 2502 Progress: 1345 on 2502 Progress: 1346 on 2502 Progress: 1347 on 2502 Progress: 1348 on 2502 Progress: 1349 on 2502 Progress: 1350 on 2502 Progress: 1351 on 2502 Progress: 1352 on 2502 Progress: 1353 on 2502 Progress: 1354 on 2502 Progress: 1355 on 2502 Progress: 1356 on 2502 Progress: 1357 on 2502 Progress: 1358 on 2502 Progress: 1359 on 2502 Progress: 1360 on 2502 Progress: 1361 on 2502 Progress: 1362 on 2502 Progress: 1363 on 2502 Progress: 1364 on 2502 Progress: 1365 on 2502 Progress: 1366 on 2502 Progress: 1367 on 2502 Progress: 1368 on 2502 Progress: 1369 on 2502 Progress: 1370 on 2502 Progress: 1371 on 2502 Progress: 1372 on 2502 Progress: 1373 on 2502 Progress: 1374 on 2502 Progress: 1375 on 2502 Progress: 1376 on 2502 Progress: 1377 on 2502 Progress: 1378 on 2502 Progress: 1379 on 2502 Progress: 1380 on 2502 Progress: 1381 on 2502 Progress: 1382 on 2502 Progress: 1383 on 2502 Progress: 1384 on 2502 Progress: 1385 on 2502 Progress: 1386 on 2502 Progress: 1387 on 2502 Progress: 1388 on 2502 Progress: 1389 on 2502 Progress: 1390 on 2502 Progress: 1391 on 2502 Progress: 1392 on 2502 Progress: 1393 on 2502 Progress: 1394 on 2502 Progress: 1395 on 2502 Progress: 1396 on 2502 Progress: 1397 on 2502 Progress: 1398 on 2502 Progress: 1399 on 2502 Progress: 1400 on 2502 Progress: 1401 on 2502 Progress: 1402 on 2502 Progress: 1403 on 2502 Progress: 1404 on 2502 Progress: 1405 on 2502 Progress: 1406 on 2502 Progress: 1407 on 2502 Progress: 1408 on 2502 Progress: 1409 on 2502 Progress: 1410 on 2502 Progress: 1411 on 2502 Progress: 1412 on 2502 Progress: 1413 on 2502 Progress: 1414 on 2502 Progress: 1415 on 2502 Progress: 1416 on 2502 Progress: 1417 on 2502 Progress: 1418 on 2502 Progress: 1419 on 2502 Progress: 1420 on 2502 Progress: 1421 on 2502 Progress: 1422 on 2502 Progress: 1423 on 2502 Progress: 1424 on 2502 Progress: 1425 on 2502 Progress: 1426 on 2502 Progress: 1427 on 2502 Progress: 1428 on 2502 Progress: 1429 on 2502 Progress: 1430 on 2502 Progress: 1431 on 2502 Progress: 1432 on 2502 Progress: 1433 on 2502 Progress: 1434 on 2502 Progress: 1435 on 2502 Progress: 1436 on 2502 Progress: 1437 on 2502 Progress: 1438 on 2502 Progress: 1439 on 2502 Progress: 1440 on 2502 Progress: 1441 on 2502 Progress: 1442 on 2502 Progress: 1443 on 2502 Progress: 1444 on 2502 Progress: 1445 on 2502 Progress: 1446 on 2502 Progress: 1447 on 2502 Progress: 1448 on 2502 Progress: 1449 on 2502 Progress: 1450 on 2502 Progress: 1451 on 2502 Progress: 1452 on 2502 Progress: 1453 on 2502 Progress: 1454 on 2502 Progress: 1455 on 2502 Progress: 1456 on 2502 Progress: 1457 on 2502 Progress: 1458 on 2502 Progress: 1459 on 2502 Progress: 1460 on 2502 Progress: 1461 on 2502 Progress: 1462 on 2502 Progress: 1463 on 2502 Progress: 1464 on 2502 Progress: 1465 on 2502 Progress: 1466 on 2502 Progress: 1467 on 2502 Progress: 1468 on 2502 Progress: 1469 on 2502 Progress: 1470 on 2502 Progress: 1471 on 2502 Progress: 1472 on 2502 Progress: 1473 on 2502 Progress: 1474 on 2502 Progress: 1475 on 2502 Progress: 1476 on 2502 Progress: 1477 on 2502 Progress: 1478 on 2502 Progress: 1479 on 2502 Progress: 1480 on 2502 Progress: 1481 on 2502 Progress: 1482 on 2502 Progress: 1483 on 2502 Progress: 1484 on 2502 Progress: 1485 on 2502 Progress: 1486 on 2502 Progress: 1487 on 2502 Progress: 1488 on 2502 Progress: 1489 on 2502 Progress: 1490 on 2502 Progress: 1491 on 2502 Progress: 1492 on 2502 Progress: 1493 on 2502 Progress: 1494 on 2502 Progress: 1495 on 2502 Progress: 1496 on 2502 Progress: 1497 on 2502 Progress: 1498 on 2502 Progress: 1499 on 2502 Progress: 1500 on 2502 Progress: 1501 on 2502 Progress: 1502 on 2502 Progress: 1503 on 2502 Progress: 1504 on 2502 Progress: 1505 on 2502 Progress: 1506 on 2502 Progress: 1507 on 2502 Progress: 1508 on 2502 Progress: 1509 on 2502 Progress: 1510 on 2502 Progress: 1511 on 2502 Progress: 1512 on 2502 Progress: 1513 on 2502 Progress: 1514 on 2502 Progress: 1515 on 2502 Progress: 1516 on 2502 Progress: 1517 on 2502 Progress: 1518 on 2502 Progress: 1519 on 2502 Progress: 1520 on 2502 Progress: 1521 on 2502 Progress: 1522 on 2502 Progress: 1523 on 2502 Progress: 1524 on 2502 Progress: 1525 on 2502 Progress: 1526 on 2502 Progress: 1527 on 2502 Progress: 1528 on 2502 Progress: 1529 on 2502 Progress: 1530 on 2502 Progress: 1531 on 2502 Progress: 1532 on 2502 Progress: 1533 on 2502 Progress: 1534 on 2502 Progress: 1535 on 2502 Progress: 1536 on 2502 Progress: 1537 on 2502 Progress: 1538 on 2502 Progress: 1539 on 2502 Progress: 1540 on 2502 Progress: 1541 on 2502 Progress: 1542 on 2502 Progress: 1543 on 2502 Progress: 1544 on 2502 Progress: 1545 on 2502 Progress: 1546 on 2502 Progress: 1547 on 2502 Progress: 1548 on 2502 Progress: 1549 on 2502 Progress: 1550 on 2502 Progress: 1551 on 2502 Progress: 1552 on 2502 Progress: 1553 on 2502 Progress: 1554 on 2502 Progress: 1555 on 2502 Progress: 1556 on 2502 Progress: 1557 on 2502 Progress: 1558 on 2502 Progress: 1559 on 2502 Progress: 1560 on 2502 Progress: 1561 on 2502 Progress: 1562 on 2502 Progress: 1563 on 2502 Progress: 1564 on 2502 Progress: 1565 on 2502 Progress: 1566 on 2502 Progress: 1567 on 2502 Progress: 1568 on 2502 Progress: 1569 on 2502 Progress: 1570 on 2502 Progress: 1571 on 2502 Progress: 1572 on 2502 Progress: 1573 on 2502 Progress: 1574 on 2502 Progress: 1575 on 2502 Progress: 1576 on 2502 Progress: 1577 on 2502 Progress: 1578 on 2502 Progress: 1579 on 2502 Progress: 1580 on 2502 Progress: 1581 on 2502 Progress: 1582 on 2502 Progress: 1583 on 2502 Progress: 1584 on 2502 Progress: 1585 on 2502 Progress: 1586 on 2502 Progress: 1587 on 2502 Progress: 1588 on 2502 Progress: 1589 on 2502 Progress: 1590 on 2502 Progress: 1591 on 2502 Progress: 1592 on 2502 Progress: 1593 on 2502 Progress: 1594 on 2502 Progress: 1595 on 2502 Progress: 1596 on 2502 Progress: 1597 on 2502 Progress: 1598 on 2502 Progress: 1599 on 2502 Progress: 1600 on 2502 Progress: 1601 on 2502 Progress: 1602 on 2502 Progress: 1603 on 2502 Progress: 1604 on 2502 Progress: 1605 on 2502 Progress: 1606 on 2502 Progress: 1607 on 2502 Progress: 1608 on 2502 Progress: 1609 on 2502 Progress: 1610 on 2502 Progress: 1611 on 2502 Progress: 1612 on 2502 Progress: 1613 on 2502 Progress: 1614 on 2502 Progress: 1615 on 2502 Progress: 1616 on 2502 Progress: 1617 on 2502 Progress: 1618 on 2502 Progress: 1619 on 2502 Progress: 1620 on 2502 Progress: 1621 on 2502 Progress: 1622 on 2502 Progress: 1623 on 2502 Progress: 1624 on 2502 Progress: 1625 on 2502 Progress: 1626 on 2502 Progress: 1627 on 2502 Progress: 1628 on 2502 Progress: 1629 on 2502 Progress: 1630 on 2502 Progress: 1631 on 2502 Progress: 1632 on 2502 Progress: 1633 on 2502 Progress: 1634 on 2502 Progress: 1635 on 2502 Progress: 1636 on 2502 Progress: 1637 on 2502 Progress: 1638 on 2502 Progress: 1639 on 2502 Progress: 1640 on 2502 Progress: 1641 on 2502 Progress: 1642 on 2502 Progress: 1643 on 2502 Progress: 1644 on 2502 Progress: 1645 on 2502 Progress: 1646 on 2502 Progress: 1647 on 2502 Progress: 1648 on 2502 Progress: 1649 on 2502 Progress: 1650 on 2502 Progress: 1651 on 2502 Progress: 1652 on 2502 Progress: 1653 on 2502 Progress: 1654 on 2502 Progress: 1655 on 2502 Progress: 1656 on 2502 Progress: 1657 on 2502 Progress: 1658 on 2502 Progress: 1659 on 2502 Progress: 1660 on 2502 Progress: 1661 on 2502 Progress: 1662 on 2502 Progress: 1663 on 2502 Progress: 1664 on 2502 Progress: 1665 on 2502 Progress: 1666 on 2502 Progress: 1667 on 2502 Progress: 1668 on 2502 Progress: 1669 on 2502 Progress: 1670 on 2502 Progress: 1671 on 2502 Progress: 1672 on 2502 Progress: 1673 on 2502 Progress: 1674 on 2502 Progress: 1675 on 2502 Progress: 1676 on 2502 Progress: 1677 on 2502 Progress: 1678 on 2502 Progress: 1679 on 2502 Progress: 1680 on 2502 Progress: 1681 on 2502 Progress: 1682 on 2502 Progress: 1683 on 2502 Progress: 1684 on 2502 Progress: 1685 on 2502 Progress: 1686 on 2502 Progress: 1687 on 2502 Progress: 1688 on 2502 Progress: 1689 on 2502 Progress: 1690 on 2502 Progress: 1691 on 2502 Progress: 1692 on 2502 Progress: 1693 on 2502 Progress: 1694 on 2502 Progress: 1695 on 2502 Progress: 1696 on 2502 Progress: 1697 on 2502 Progress: 1698 on 2502 Progress: 1699 on 2502 Progress: 1700 on 2502 Progress: 1701 on 2502 Progress: 1702 on 2502 Progress: 1703 on 2502 Progress: 1704 on 2502 Progress: 1705 on 2502 Progress: 1706 on 2502 Progress: 1707 on 2502 Progress: 1708 on 2502 Progress: 1709 on 2502 Progress: 1710 on 2502 Progress: 1711 on 2502 Progress: 1712 on 2502 Progress: 1713 on 2502 Progress: 1714 on 2502 Progress: 1715 on 2502 Progress: 1716 on 2502 Progress: 1717 on 2502 Progress: 1718 on 2502 Progress: 1719 on 2502 Progress: 1720 on 2502 Progress: 1721 on 2502 Progress: 1722 on 2502 Progress: 1723 on 2502 Progress: 1724 on 2502 Progress: 1725 on 2502 Progress: 1726 on 2502 Progress: 1727 on 2502 Progress: 1728 on 2502 Progress: 1729 on 2502 Progress: 1730 on 2502 Progress: 1731 on 2502 Progress: 1732 on 2502 Progress: 1733 on 2502 Progress: 1734 on 2502 Progress: 1735 on 2502 Progress: 1736 on 2502 Progress: 1737 on 2502 Progress: 1738 on 2502 Progress: 1739 on 2502 Progress: 1740 on 2502 Progress: 1741 on 2502 Progress: 1742 on 2502 Progress: 1743 on 2502 Progress: 1744 on 2502 Progress: 1745 on 2502 Progress: 1746 on 2502 Progress: 1747 on 2502 Progress: 1748 on 2502 Progress: 1749 on 2502 Progress: 1750 on 2502 Progress: 1751 on 2502 Progress: 1752 on 2502 Progress: 1753 on 2502 Progress: 1754 on 2502 Progress: 1755 on 2502 Progress: 1756 on 2502 Progress: 1757 on 2502 Progress: 1758 on 2502 Progress: 1759 on 2502 Progress: 1760 on 2502 Progress: 1761 on 2502 Progress: 1762 on 2502 Progress: 1763 on 2502 Progress: 1764 on 2502 Progress: 1765 on 2502 Progress: 1766 on 2502 Progress: 1767 on 2502 Progress: 1768 on 2502 Progress: 1769 on 2502 Progress: 1770 on 2502 Progress: 1771 on 2502 Progress: 1772 on 2502 Progress: 1773 on 2502 Progress: 1774 on 2502 Progress: 1775 on 2502 Progress: 1776 on 2502 Progress: 1777 on 2502 Progress: 1778 on 2502 Progress: 1779 on 2502 Progress: 1780 on 2502 Progress: 1781 on 2502 Progress: 1782 on 2502 Progress: 1783 on 2502 Progress: 1784 on 2502 Progress: 1785 on 2502 Progress: 1786 on 2502 Progress: 1787 on 2502 Progress: 1788 on 2502 Progress: 1789 on 2502 Progress: 1790 on 2502 Progress: 1791 on 2502 Progress: 1792 on 2502 Progress: 1793 on 2502 Progress: 1794 on 2502 Progress: 1795 on 2502 Progress: 1796 on 2502 Progress: 1797 on 2502 Progress: 1798 on 2502 Progress: 1799 on 2502 Progress: 1800 on 2502 Progress: 1801 on 2502 Progress: 1802 on 2502 Progress: 1803 on 2502 Progress: 1804 on 2502 Progress: 1805 on 2502 Progress: 1806 on 2502 Progress: 1807 on 2502 Progress: 1808 on 2502 Progress: 1809 on 2502 Progress: 1810 on 2502 Progress: 1811 on 2502 Progress: 1812 on 2502 Progress: 1813 on 2502 Progress: 1814 on 2502 Progress: 1815 on 2502 Progress: 1816 on 2502 Progress: 1817 on 2502 Progress: 1818 on 2502 Progress: 1819 on 2502 Progress: 1820 on 2502 Progress: 1821 on 2502 Progress: 1822 on 2502 Progress: 1823 on 2502 Progress: 1824 on 2502 Progress: 1825 on 2502 Progress: 1826 on 2502 Progress: 1827 on 2502 Progress: 1828 on 2502 Progress: 1829 on 2502 Progress: 1830 on 2502 Progress: 1831 on 2502 Progress: 1832 on 2502 Progress: 1833 on 2502 Progress: 1834 on 2502 Progress: 1835 on 2502 Progress: 1836 on 2502 Progress: 1837 on 2502 Progress: 1838 on 2502 Progress: 1839 on 2502 Progress: 1840 on 2502 Progress: 1841 on 2502 Progress: 1842 on 2502 Progress: 1843 on 2502 Progress: 1844 on 2502 Progress: 1845 on 2502 Progress: 1846 on 2502 Progress: 1847 on 2502 Progress: 1848 on 2502 Progress: 1849 on 2502 Progress: 1850 on 2502 Progress: 1851 on 2502 Progress: 1852 on 2502 Progress: 1853 on 2502 Progress: 1854 on 2502 Progress: 1855 on 2502 Progress: 1856 on 2502 Progress: 1857 on 2502 Progress: 1858 on 2502 Progress: 1859 on 2502 Progress: 1860 on 2502 Progress: 1861 on 2502 Progress: 1862 on 2502 Progress: 1863 on 2502 Progress: 1864 on 2502 Progress: 1865 on 2502 Progress: 1866 on 2502 Progress: 1867 on 2502 Progress: 1868 on 2502 Progress: 1869 on 2502 Progress: 1870 on 2502 Progress: 1871 on 2502 Progress: 1872 on 2502 Progress: 1873 on 2502 Progress: 1874 on 2502 Progress: 1875 on 2502 Progress: 1876 on 2502 Progress: 1877 on 2502 Progress: 1878 on 2502 Progress: 1879 on 2502 Progress: 1880 on 2502 Progress: 1881 on 2502 Progress: 1882 on 2502 Progress: 1883 on 2502 Progress: 1884 on 2502 Progress: 1885 on 2502 Progress: 1886 on 2502 Progress: 1887 on 2502 Progress: 1888 on 2502 Progress: 1889 on 2502 Progress: 1890 on 2502 Progress: 1891 on 2502 Progress: 1892 on 2502 Progress: 1893 on 2502 Progress: 1894 on 2502 Progress: 1895 on 2502 Progress: 1896 on 2502 Progress: 1897 on 2502 Progress: 1898 on 2502 Progress: 1899 on 2502 Progress: 1900 on 2502 Progress: 1901 on 2502 Progress: 1902 on 2502 Progress: 1903 on 2502 Progress: 1904 on 2502 Progress: 1905 on 2502 Progress: 1906 on 2502 Progress: 1907 on 2502 Progress: 1908 on 2502 Progress: 1909 on 2502 Progress: 1910 on 2502 Progress: 1911 on 2502 Progress: 1912 on 2502 Progress: 1913 on 2502 Progress: 1914 on 2502 Progress: 1915 on 2502 Progress: 1916 on 2502 Progress: 1917 on 2502 Progress: 1918 on 2502 Progress: 1919 on 2502 Progress: 1920 on 2502 Progress: 1921 on 2502 Progress: 1922 on 2502 Progress: 1923 on 2502 Progress: 1924 on 2502 Progress: 1925 on 2502 Progress: 1926 on 2502 Progress: 1927 on 2502 Progress: 1928 on 2502 Progress: 1929 on 2502 Progress: 1930 on 2502 Progress: 1931 on 2502 Progress: 1932 on 2502 Progress: 1933 on 2502 Progress: 1934 on 2502 Progress: 1935 on 2502 Progress: 1936 on 2502 Progress: 1937 on 2502 Progress: 1938 on 2502 Progress: 1939 on 2502 Progress: 1940 on 2502 Progress: 1941 on 2502 Progress: 1942 on 2502 Progress: 1943 on 2502 Progress: 1944 on 2502 Progress: 1945 on 2502 Progress: 1946 on 2502 Progress: 1947 on 2502 Progress: 1948 on 2502 Progress: 1949 on 2502 Progress: 1950 on 2502 Progress: 1951 on 2502 Progress: 1952 on 2502 Progress: 1953 on 2502 Progress: 1954 on 2502 Progress: 1955 on 2502 Progress: 1956 on 2502 Progress: 1957 on 2502 Progress: 1958 on 2502 Progress: 1959 on 2502 Progress: 1960 on 2502 Progress: 1961 on 2502 Progress: 1962 on 2502 Progress: 1963 on 2502 Progress: 1964 on 2502 Progress: 1965 on 2502 Progress: 1966 on 2502 Progress: 1967 on 2502 Progress: 1968 on 2502 Progress: 1969 on 2502 Progress: 1970 on 2502 Progress: 1971 on 2502 Progress: 1972 on 2502 Progress: 1973 on 2502 Progress: 1974 on 2502 Progress: 1975 on 2502 Progress: 1976 on 2502 Progress: 1977 on 2502 Progress: 1978 on 2502 Progress: 1979 on 2502 Progress: 1980 on 2502 Progress: 1981 on 2502 Progress: 1982 on 2502 Progress: 1983 on 2502 Progress: 1984 on 2502 Progress: 1985 on 2502 Progress: 1986 on 2502 Progress: 1987 on 2502 Progress: 1988 on 2502 Progress: 1989 on 2502 Progress: 1990 on 2502 Progress: 1991 on 2502 Progress: 1992 on 2502 Progress: 1993 on 2502 Progress: 1994 on 2502 Progress: 1995 on 2502 Progress: 1996 on 2502 Progress: 1997 on 2502 Progress: 1998 on 2502 Progress: 1999 on 2502 Progress: 2000 on 2502 Progress: 2001 on 2502 Progress: 2002 on 2502 Progress: 2003 on 2502 Progress: 2004 on 2502 Progress: 2005 on 2502 Progress: 2006 on 2502 Progress: 2007 on 2502 Progress: 2008 on 2502 Progress: 2009 on 2502 Progress: 2010 on 2502 Progress: 2011 on 2502 Progress: 2012 on 2502 Progress: 2013 on 2502 Progress: 2014 on 2502 Progress: 2015 on 2502 Progress: 2016 on 2502 Progress: 2017 on 2502 Progress: 2018 on 2502 Progress: 2019 on 2502 Progress: 2020 on 2502 Progress: 2021 on 2502 Progress: 2022 on 2502 Progress: 2023 on 2502 Progress: 2024 on 2502 Progress: 2025 on 2502 Progress: 2026 on 2502 Progress: 2027 on 2502 Progress: 2028 on 2502 Progress: 2029 on 2502 Progress: 2030 on 2502 Progress: 2031 on 2502 Progress: 2032 on 2502 Progress: 2033 on 2502 Progress: 2034 on 2502 Progress: 2035 on 2502 Progress: 2036 on 2502 Progress: 2037 on 2502 Progress: 2038 on 2502 Progress: 2039 on 2502 Progress: 2040 on 2502 Progress: 2041 on 2502 Progress: 2042 on 2502 Progress: 2043 on 2502 Progress: 2044 on 2502 Progress: 2045 on 2502 Progress: 2046 on 2502 Progress: 2047 on 2502 Progress: 2048 on 2502 Progress: 2049 on 2502 Progress: 2050 on 2502 Progress: 2051 on 2502 Progress: 2052 on 2502 Progress: 2053 on 2502 Progress: 2054 on 2502 Progress: 2055 on 2502 Progress: 2056 on 2502 Progress: 2057 on 2502 Progress: 2058 on 2502 Progress: 2059 on 2502 Progress: 2060 on 2502 Progress: 2061 on 2502 Progress: 2062 on 2502 Progress: 2063 on 2502 Progress: 2064 on 2502 Progress: 2065 on 2502 Progress: 2066 on 2502 Progress: 2067 on 2502 Progress: 2068 on 2502 Progress: 2069 on 2502 Progress: 2070 on 2502 Progress: 2071 on 2502 Progress: 2072 on 2502 Progress: 2073 on 2502 Progress: 2074 on 2502 Progress: 2075 on 2502 Progress: 2076 on 2502 Progress: 2077 on 2502 Progress: 2078 on 2502 Progress: 2079 on 2502 Progress: 2080 on 2502 Progress: 2081 on 2502 Progress: 2082 on 2502 Progress: 2083 on 2502 Progress: 2084 on 2502 Progress: 2085 on 2502 Progress: 2086 on 2502 Progress: 2087 on 2502 Progress: 2088 on 2502 Progress: 2089 on 2502 Progress: 2090 on 2502 Progress: 2091 on 2502 Progress: 2092 on 2502 Progress: 2093 on 2502 Progress: 2094 on 2502 Progress: 2095 on 2502 Progress: 2096 on 2502 Progress: 2097 on 2502 Progress: 2098 on 2502 Progress: 2099 on 2502 Progress: 2100 on 2502 Progress: 2101 on 2502 Progress: 2102 on 2502 Progress: 2103 on 2502 Progress: 2104 on 2502 Progress: 2105 on 2502 Progress: 2106 on 2502 Progress: 2107 on 2502 Progress: 2108 on 2502 Progress: 2109 on 2502 Progress: 2110 on 2502 Progress: 2111 on 2502 Progress: 2112 on 2502 Progress: 2113 on 2502 Progress: 2114 on 2502 Progress: 2115 on 2502 Progress: 2116 on 2502 Progress: 2117 on 2502 Progress: 2118 on 2502 Progress: 2119 on 2502 Progress: 2120 on 2502 Progress: 2121 on 2502 Progress: 2122 on 2502 Progress: 2123 on 2502 Progress: 2124 on 2502 Progress: 2125 on 2502 Progress: 2126 on 2502 Progress: 2127 on 2502 Progress: 2128 on 2502 Progress: 2129 on 2502 Progress: 2130 on 2502 Progress: 2131 on 2502 Progress: 2132 on 2502 Progress: 2133 on 2502 Progress: 2134 on 2502 Progress: 2135 on 2502 Progress: 2136 on 2502 Progress: 2137 on 2502 Progress: 2138 on 2502 Progress: 2139 on 2502 Progress: 2140 on 2502 Progress: 2141 on 2502 Progress: 2142 on 2502 Progress: 2143 on 2502 Progress: 2144 on 2502 Progress: 2145 on 2502 Progress: 2146 on 2502 Progress: 2147 on 2502 Progress: 2148 on 2502 Progress: 2149 on 2502 Progress: 2150 on 2502 Progress: 2151 on 2502 Progress: 2152 on 2502 Progress: 2153 on 2502 Progress: 2154 on 2502 Progress: 2155 on 2502 Progress: 2156 on 2502 Progress: 2157 on 2502 Progress: 2158 on 2502 Progress: 2159 on 2502 Progress: 2160 on 2502 Progress: 2161 on 2502 Progress: 2162 on 2502 Progress: 2163 on 2502 Progress: 2164 on 2502 Progress: 2165 on 2502 Progress: 2166 on 2502 Progress: 2167 on 2502 Progress: 2168 on 2502 Progress: 2169 on 2502 Progress: 2170 on 2502 Progress: 2171 on 2502 Progress: 2172 on 2502 Progress: 2173 on 2502 Progress: 2174 on 2502 Progress: 2175 on 2502 Progress: 2176 on 2502 Progress: 2177 on 2502 Progress: 2178 on 2502 Progress: 2179 on 2502 Progress: 2180 on 2502 Progress: 2181 on 2502 Progress: 2182 on 2502 Progress: 2183 on 2502 Progress: 2184 on 2502 Progress: 2185 on 2502 Progress: 2186 on 2502 Progress: 2187 on 2502 Progress: 2188 on 2502 Progress: 2189 on 2502 Progress: 2190 on 2502 Progress: 2191 on 2502 Progress: 2192 on 2502 Progress: 2193 on 2502 Progress: 2194 on 2502 Progress: 2195 on 2502 Progress: 2196 on 2502 Progress: 2197 on 2502 Progress: 2198 on 2502 Progress: 2199 on 2502 Progress: 2200 on 2502 Progress: 2201 on 2502 Progress: 2202 on 2502 Progress: 2203 on 2502 Progress: 2204 on 2502 Progress: 2205 on 2502 Progress: 2206 on 2502 Progress: 2207 on 2502 Progress: 2208 on 2502 Progress: 2209 on 2502 Progress: 2210 on 2502 Progress: 2211 on 2502 Progress: 2212 on 2502 Progress: 2213 on 2502 Progress: 2214 on 2502 Progress: 2215 on 2502 Progress: 2216 on 2502 Progress: 2217 on 2502 Progress: 2218 on 2502 Progress: 2219 on 2502 Progress: 2220 on 2502 Progress: 2221 on 2502 Progress: 2222 on 2502 Progress: 2223 on 2502 Progress: 2224 on 2502 Progress: 2225 on 2502 Progress: 2226 on 2502 Progress: 2227 on 2502 Progress: 2228 on 2502 Progress: 2229 on 2502 Progress: 2230 on 2502 Progress: 2231 on 2502 Progress: 2232 on 2502 Progress: 2233 on 2502 Progress: 2234 on 2502 Progress: 2235 on 2502 Progress: 2236 on 2502 Progress: 2237 on 2502 Progress: 2238 on 2502 Progress: 2239 on 2502 Progress: 2240 on 2502 Progress: 2241 on 2502 Progress: 2242 on 2502 Progress: 2243 on 2502 Progress: 2244 on 2502 Progress: 2245 on 2502 Progress: 2246 on 2502 Progress: 2247 on 2502 Progress: 2248 on 2502 Progress: 2249 on 2502 Progress: 2250 on 2502 Progress: 2251 on 2502 Progress: 2252 on 2502 Progress: 2253 on 2502 Progress: 2254 on 2502 Progress: 2255 on 2502 Progress: 2256 on 2502 Progress: 2257 on 2502 Progress: 2258 on 2502 Progress: 2259 on 2502 Progress: 2260 on 2502 Progress: 2261 on 2502 Progress: 2262 on 2502 Progress: 2263 on 2502 Progress: 2264 on 2502 Progress: 2265 on 2502 Progress: 2266 on 2502 Progress: 2267 on 2502 Progress: 2268 on 2502 Progress: 2269 on 2502 Progress: 2270 on 2502 Progress: 2271 on 2502 Progress: 2272 on 2502 Progress: 2273 on 2502 Progress: 2274 on 2502 Progress: 2275 on 2502 Progress: 2276 on 2502 Progress: 2277 on 2502 Progress: 2278 on 2502 Progress: 2279 on 2502 Progress: 2280 on 2502 Progress: 2281 on 2502 Progress: 2282 on 2502 Progress: 2283 on 2502 Progress: 2284 on 2502 Progress: 2285 on 2502 Progress: 2286 on 2502 Progress: 2287 on 2502 Progress: 2288 on 2502 Progress: 2289 on 2502 Progress: 2290 on 2502 Progress: 2291 on 2502 Progress: 2292 on 2502 Progress: 2293 on 2502 Progress: 2294 on 2502 Progress: 2295 on 2502 Progress: 2296 on 2502 Progress: 2297 on 2502 Progress: 2298 on 2502 Progress: 2299 on 2502 Progress: 2300 on 2502 Progress: 2301 on 2502 Progress: 2302 on 2502 Progress: 2303 on 2502 Progress: 2304 on 2502 Progress: 2305 on 2502 Progress: 2306 on 2502 Progress: 2307 on 2502 Progress: 2308 on 2502 Progress: 2309 on 2502 Progress: 2310 on 2502 Progress: 2311 on 2502 Progress: 2312 on 2502 Progress: 2313 on 2502 Progress: 2314 on 2502 Progress: 2315 on 2502 Progress: 2316 on 2502 Progress: 2317 on 2502 Progress: 2318 on 2502 Progress: 2319 on 2502 Progress: 2320 on 2502 Progress: 2321 on 2502 Progress: 2322 on 2502 Progress: 2323 on 2502 Progress: 2324 on 2502 Progress: 2325 on 2502 Progress: 2326 on 2502 Progress: 2327 on 2502 Progress: 2328 on 2502 Progress: 2329 on 2502 Progress: 2330 on 2502 Progress: 2331 on 2502 Progress: 2332 on 2502 Progress: 2333 on 2502 Progress: 2334 on 2502 Progress: 2335 on 2502 Progress: 2336 on 2502 Progress: 2337 on 2502 Progress: 2338 on 2502 Progress: 2339 on 2502 Progress: 2340 on 2502 Progress: 2341 on 2502 Progress: 2342 on 2502 Progress: 2343 on 2502 Progress: 2344 on 2502 Progress: 2345 on 2502 Progress: 2346 on 2502 Progress: 2347 on 2502 Progress: 2348 on 2502 Progress: 2349 on 2502 Progress: 2350 on 2502 Progress: 2351 on 2502 Progress: 2352 on 2502 Progress: 2353 on 2502 Progress: 2354 on 2502 Progress: 2355 on 2502 Progress: 2356 on 2502 Progress: 2357 on 2502 Progress: 2358 on 2502 Progress: 2359 on 2502 Progress: 2360 on 2502 Progress: 2361 on 2502 Progress: 2362 on 2502 Progress: 2363 on 2502 Progress: 2364 on 2502 Progress: 2365 on 2502 Progress: 2366 on 2502 Progress: 2367 on 2502 Progress: 2368 on 2502 Progress: 2369 on 2502 Progress: 2370 on 2502 Progress: 2371 on 2502 Progress: 2372 on 2502 Progress: 2373 on 2502 Progress: 2374 on 2502 Progress: 2375 on 2502 Progress: 2376 on 2502 Progress: 2377 on 2502 Progress: 2378 on 2502 Progress: 2379 on 2502 Progress: 2380 on 2502 Progress: 2381 on 2502 Progress: 2382 on 2502 Progress: 2383 on 2502 Progress: 2384 on 2502 Progress: 2385 on 2502 Progress: 2386 on 2502 Progress: 2387 on 2502 Progress: 2388 on 2502 Progress: 2389 on 2502 Progress: 2390 on 2502 Progress: 2391 on 2502 Progress: 2392 on 2502 Progress: 2393 on 2502 Progress: 2394 on 2502 Progress: 2395 on 2502 Progress: 2396 on 2502 Progress: 2397 on 2502 Progress: 2398 on 2502 Progress: 2399 on 2502 Progress: 2400 on 2502 Progress: 2401 on 2502 Progress: 2402 on 2502 Progress: 2403 on 2502 Progress: 2404 on 2502 Progress: 2405 on 2502 Progress: 2406 on 2502 Progress: 2407 on 2502 Progress: 2408 on 2502 Progress: 2409 on 2502 Progress: 2410 on 2502 Progress: 2411 on 2502 Progress: 2412 on 2502 Progress: 2413 on 2502 Progress: 2414 on 2502 Progress: 2415 on 2502 Progress: 2416 on 2502 Progress: 2417 on 2502 Progress: 2418 on 2502 Progress: 2419 on 2502 Progress: 2420 on 2502 Progress: 2421 on 2502 Progress: 2422 on 2502 Progress: 2423 on 2502 Progress: 2424 on 2502 Progress: 2425 on 2502 Progress: 2426 on 2502 Progress: 2427 on 2502 Progress: 2428 on 2502 Progress: 2429 on 2502 Progress: 2430 on 2502 Progress: 2431 on 2502 Progress: 2432 on 2502 Progress: 2433 on 2502 Progress: 2434 on 2502 Progress: 2435 on 2502 Progress: 2436 on 2502 Progress: 2437 on 2502 Progress: 2438 on 2502 Progress: 2439 on 2502 Progress: 2440 on 2502 Progress: 2441 on 2502 Progress: 2442 on 2502 Progress: 2443 on 2502 Progress: 2444 on 2502 Progress: 2445 on 2502 Progress: 2446 on 2502 Progress: 2447 on 2502 Progress: 2448 on 2502 Progress: 2449 on 2502 Progress: 2450 on 2502 Progress: 2451 on 2502 Progress: 2452 on 2502 Progress: 2453 on 2502 Progress: 2454 on 2502 Progress: 2455 on 2502 Progress: 2456 on 2502 Progress: 2457 on 2502 Progress: 2458 on 2502 Progress: 2459 on 2502 Progress: 2460 on 2502 Progress: 2461 on 2502 Progress: 2462 on 2502 Progress: 2463 on 2502 Progress: 2464 on 2502 Progress: 2465 on 2502 Progress: 2466 on 2502 Progress: 2467 on 2502 Progress: 2468 on 2502 Progress: 2469 on 2502 Progress: 2470 on 2502 Progress: 2471 on 2502 Progress: 2472 on 2502 Progress: 2473 on 2502 Progress: 2474 on 2502 Progress: 2475 on 2502 Progress: 2476 on 2502 Progress: 2477 on 2502 Progress: 2478 on 2502 Progress: 2479 on 2502 Progress: 2480 on 2502 Progress: 2481 on 2502 Progress: 2482 on 2502 Progress: 2483 on 2502 Progress: 2484 on 2502 Progress: 2485 on 2502 Progress: 2486 on 2502 Progress: 2487 on 2502 Progress: 2488 on 2502 Progress: 2489 on 2502 Progress: 2490 on 2502 Progress: 2491 on 2502 Progress: 2492 on 2502 Progress: 2493 on 2502 Progress: 2494 on 2502 Progress: 2495 on 2502 Progress: 2496 on 2502 Progress: 2497 on 2502 Progress: 2498 on 2502 Progress: 2499 on 2502 Progress: 2500 on 2502 Progress: 2501 on 2502 Progress: 2502 on 2502
za_instytucja <- za_instytucja %>%
filter(is.na(czy_nazwisko)&is.na(czy_imie)) %>%
filter(instytucja!="") %>%
filter(!grepl("^\\[[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]|^[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]",instytucja)) %>%
mutate(instytucja = str_remove(instytucja,"\\.$")) %>%
select(ZA_UWAGI,instytucja) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#10: wydawnictwo
BN_wydawnictwo <- data %>%
select(ZA_UWAGI, X260) %>%
mutate(X260 = str_replace_all(X260,"s\\.n\\.", "b.w."),
X260 = str_replace_all(X260,"s\\.l\\.", "b.m."),
X260 = str_replace_all(X260,"S\\.l\\.", "b.m."),
X260 = str_remove(X260,"^\\\\+"),
rok_wydania = str_extract_all(X260, "(?<=\\$c).*(?=\\$e)|(?<=\\$c).*"),
bez_roku = str_replace_all(X260, ".\\$c.*", ""),
ile_wydawnictw = str_count(bez_roku, "\\$b"),
ile_miejsc = str_count(bez_roku, "\\$a"),
kolejnosc = str_replace_all(as.character(str_extract_all(bez_roku, "\\$.")), "[^a-z]", ""),
bez_roku = str_replace_all(bez_roku, ";\\$b", ":$b"),
wydaw_podziel = ifelse(ile_wydawnictw>ile_miejsc|kolejnosc=="caabb", str_replace_all(bez_roku, "(\\$a)(.*?)( :\\$b.*?)( :\\$b)", "\\1\\2\\3 ;$a\\2\\4"),bez_roku),
wydawnictwo_test = str_replace_all(wydaw_podziel, "(\\$b)(.*?)( ;\\$a)", "\\1\\2|\\3")) %>%
select(ZA_UWAGI,rok_wydania,wydawnictwo_test) %>%
cSplit(., "wydawnictwo_test", sep = "|", direction = "long") %>%
mutate(wydawnictwo = str_extract_all(wydawnictwo_test, "(?<=\\$b)(.*)"),
miejsce_wydania = str_replace_all(str_extract_all(wydawnictwo_test, "(?<=\\$a)(.*)(?= {0,1}: {0,1}\\$b)|(?<=\\$a)(.*)($)")," ;\\$a", ", "),
nazwa_prosta = str_to_lower(str_replace_all(str_replace_all(unlist(wydawnictwo_test), "\\$\\w", ""), "\\W", ""))) %>%
left_join(.,PBL_wydawnictwa,by="nazwa_prosta") %>%
mutate(to_samo = wydawnictwo==WY_NAZWA) %>%
arrange(ZA_UWAGI,-to_samo,-WY_LICZBA_ZAPISOW)
argument is not an atomic vector; coercing
BN_wydawnictwo$id_grupy <- cumsum(!duplicated(BN_wydawnictwo[1:3]))
BN_wydawnictwo <- BN_wydawnictwo[!duplicated(BN_wydawnictwo$id_grupy),] %>%
mutate(WY_NAZWA = ifelse(!is.na(WY_NAZWA),as.character(WY_NAZWA),as.character(wydawnictwo)),
WY_MIASTO = ifelse(!is.na(WY_MIASTO),as.character(WY_MIASTO),trim(as.character(miejsce_wydania))),
rok_wydania = str_replace_all(rok_wydania, "(.*)(\\.)", "\\1"),
za_rok_wydania = ifelse(nchar(rok_wydania)==4,as.character(rok_wydania),NA),
do_opisu = ifelse(is.na(za_rok_wydania),paste("[",str_extract(rok_wydania,"\\d{4}"),"]",sep = ""),""),
WY_MIASTO = ifelse(substr(WY_MIASTO,1,1)=="["&substr(WY_MIASTO,nchar(WY_MIASTO),nchar(WY_MIASTO))!="]"&is.na(WY_WYDAWNICTWO_ID),paste(trim(WY_MIASTO),"]",sep = ""),as.character(WY_MIASTO))) %>%
select(ZA_UWAGI,WY_WYDAWNICTWO_ID,WY_NAZWA,WY_MIASTO,za_rok_wydania,do_opisu) %>%
mutate(WY_NAZWA = ifelse(str_count(WY_NAZWA, "\\[")>str_count(WY_NAZWA, "\\]"), paste(WY_NAZWA, "]", sep = ""),
ifelse(str_count(WY_NAZWA, "\\[")<str_count(WY_NAZWA, "\\]"), paste("[", WY_NAZWA, sep = ""), as.character(WY_NAZWA))),
WY_MIASTO = ifelse(str_count(WY_MIASTO, "\\[")>str_count(WY_MIASTO, "\\]"), paste(WY_MIASTO, "]", sep = ""),
ifelse(str_count(WY_MIASTO, "\\[")<str_count(WY_MIASTO, "\\]"), paste("[", WY_MIASTO, sep = ""), as.character(WY_MIASTO))))
#11: opis fizyczny książki
#pole 300 do opisu fizycznego
marc_field_300 <- data %>%
select(ZA_UWAGI,X300)%>%
filter(X300!="") %>%
mutate(X300=str_replace_all(X300,"(^|\\|)","~\\1")) %>%
cSplit(.,"X300",sep = "~",direction = "long") %>%
filter(X300!="") %>%
mutate(X300=str_remove_all(X300,"^\\|")) %>%
mutate(indicator = str_replace_all(X300,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X300,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_300)[1]))
colnames(empty_table) <-subfield_list
marc_field_300<-cbind(marc_field_300,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_300$X300 <- str_replace(marc_field_300$X300,subfield_list_char[i],"|\\1")
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_300[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_300$X300),str_replace_all(gsub(string,"\\3",marc_field_300$X300),"\\${2}.", "~"),NA)
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
marc_field_300 <- marc_field_300 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$b` = str_remove(`$b`," \\;+$| \\:+$"),
`$e` = ifelse(grepl("CD-ROM|DVD|VCD|CD",`$e`)&grepl("\\+ dysk|płyt",`$e`),str_extract(`$e`,"(?<=\\+)(dysk|płyt.*?)(CD-ROM|DVD|VCD|CD)(\\)){0,1}"),
ifelse(grepl("CD-ROM|DVD|VCD|CD",`$e`),str_extract(`$e`,"(^.*?)(CD-ROM|DVD|VCD|CD)(\\)){0,1}"),NA)),
`$a` = ifelse(is.na(`$a`),"",as.character(`$a`)),
`$b` = ifelse(is.na(`$b`),"",as.character(`$b`)),
`$e` = ifelse(is.na(`$e`),"",as.character(`$e`)))
#pole 500 do opisu fizycznego
marc_field_500 <- data %>%
select(ZA_UWAGI,X500)%>%
filter(X500!="") %>%
mutate(X500=str_replace_all(X500,"(^|\\|)","~\\1")) %>%
cSplit(.,"X500",sep = "~",direction = "long") %>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"^\\|")) %>%
mutate(indicator = str_replace_all(X500,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X500,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_500)[1]))
colnames(empty_table) <-subfield_list
marc_field_500<-cbind(marc_field_500,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_500$X500 <- str_replace(marc_field_500$X500,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_500[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_500$X500),str_replace_all(gsub(string,"\\3",marc_field_500$X500),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_500 <- marc_field_500 %>%
mutate(`$a` = ifelse(grepl("oryg(\\.|\\,)",X500)&grepl("pseud|nazwa",X500,ignore.case = TRUE),str_replace(`$a`,"(^.*?)(\\. )(\\p{Lu}.*$)","\\3"),as.character(`$a`))) %>%
filter(!grepl("oryg(\\.|\\,)",`$a`)&grepl("pseud|nazwa|dotycz|pol",`$a`,ignore.case = TRUE)) %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"))
#pole 546 do opisu fizycznego
marc_field_546 <- data %>%
select(ZA_UWAGI,X546)%>%
filter(X546!="") %>%
mutate(X546=str_replace_all(X546,"(^|\\|)","~\\1")) %>%
cSplit(.,"X546",sep = "~",direction = "long") %>%
filter(X546!="") %>%
mutate(X546=str_remove_all(X546,"^\\|")) %>%
mutate(indicator = str_replace_all(X546,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X546,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_546)[1]))
colnames(empty_table) <-subfield_list
marc_field_546<-cbind(marc_field_546,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_546$X546 <- str_replace(marc_field_546$X546,subfield_list_char[i],"|\\1")
}
Progress: 1 on 2 Progress: 2 on 2
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_546[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_546$X546),str_replace_all(gsub(string,"\\3",marc_field_546$X546),"\\${2}.", "~"),NA)
}
Progress: 1 on 2 Progress: 2 on 2
marc_field_546 <- marc_field_546 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"))
#pole 501 do opisu fizycznego
marc_field_501 <- data %>%
select(ZA_UWAGI,X501)%>%
filter(X501!="") %>%
mutate(X501=str_replace_all(X501,"(^|\\|)","~\\1")) %>%
cSplit(.,"X501",sep = "~",direction = "long") %>%
filter(X501!="") %>%
mutate(X501=str_remove_all(X501,"^\\|")) %>%
mutate(indicator = str_replace_all(X501,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X501,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_501)[1]))
colnames(empty_table) <-subfield_list
marc_field_501<-cbind(marc_field_501,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_501$X501 <- str_replace(marc_field_501$X501,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_501[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_501$X501),str_replace_all(gsub(string,"\\3",marc_field_501$X501),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_501 <- marc_field_501 %>%
select(ZA_UWAGI, `$a`)
za_opis_ks <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,do_opisu),by="ZA_UWAGI") %>%
left_join(.,marc_field_300 %>% select(ZA_UWAGI,X300a=`$a`,X300b=`$b`,X300e=`$e`),by="ZA_UWAGI") %>%
left_join(.,marc_field_500 %>% select(ZA_UWAGI,X500a=`$a`),by="ZA_UWAGI") %>%
left_join(.,marc_field_546 %>% select(ZA_UWAGI,X546a=`$a`),by="ZA_UWAGI") %>%
left_join(.,marc_field_501 %>% select(ZA_UWAGI,X501a=`$a`),by="ZA_UWAGI")
za_opis_ks[is.na(za_opis_ks)] <- ""
za_opis_ks <- za_opis_ks %>%
mutate(za_opis_ks = paste(ifelse(do_opisu!="",paste(as.character(do_opisu),", ",sep = ""),""),ifelse(X300a!="",paste(as.character(X300a),", ",sep = ""),""),ifelse(X300b!="",paste(as.character(X300b),", ",sep = ""),""),ifelse(X300e!="",paste(as.character(X300e),", ",sep = ""),""),ifelse(X500a!="",paste(as.character(X500a),", ",sep = ""),""),ifelse(X546a!="",as.character(X546a),""),ifelse(X501a!="",as.character(X501a),""),sep = ""),
za_opis_ks = str_remove(za_opis_ks,"(, )+$")) %>%
select(ZA_UWAGI,za_opis_ks) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(za_opis_ks))
za_opis_ks$id_grupy <- cumsum(!duplicated(za_opis_ks[1]))
za_opis_ks <- za_opis_ks[!duplicated(za_opis_ks$id_grupy),] %>%
select(-id_grupy)
#12: seria wydawnicza
marc_field_490 <- data %>%
select(ZA_UWAGI,X490,X800,X830) %>%
mutate(X490 = ifelse(grepl("U\\+",X490),as.character(X830),as.character(X490))) %>%
mutate(X800 = ifelse(X490!="","",as.character(X800)),
X830 = ifelse(X490!="","",as.character(X830)),
X800 = str_replace(X800,"(\\$a)(.*)(\\$t)","\\1"),
X490 = ifelse(X490==""&X830!="",as.character(X830),
ifelse(X490==""&X800!="",as.character(X800),as.character(X490)))) %>%
select(ZA_UWAGI,X490) %>%
filter(X490!="") %>%
mutate(X490=str_replace_all(X490,"(^|\\|)","~\\1")) %>%
cSplit(.,"X490",sep = "~",direction = "long") %>%
filter(X490!="") %>%
mutate(X490=str_remove_all(X490,"^\\|")) %>%
mutate(indicator = str_replace_all(X490,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X490,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_490)[1]))
colnames(empty_table) <-subfield_list
marc_field_490<-cbind(marc_field_490,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_490$X490 <- str_replace(marc_field_490$X490,subfield_list_char[i],"|\\1")
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_490[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_490$X490),str_replace_all(gsub(string,"\\3",marc_field_490$X490),"\\${2}.", "~"),NA)
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
za_seria_wydawnicza <- marc_field_490 %>%
mutate(`$a` = str_replace_all(`$a`,"(=)(\\$a)","\\1 "),
`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$v` = ifelse(is.na(`$v`),"",as.character(`$v`))) %>%
filter(!is.na(`$a`)) %>%
mutate(seria = str_remove(paste("(",`$a`,"; ",`$v`,")",sep = ""),"; (?=\\)$)"),
seria = gsub("( : )(.)",". \\U\\2",perl=TRUE,seria)) %>%
select(ZA_UWAGI,seria) %>%
group_by(ZA_UWAGI) %>%
mutate(seria = paste(seria,collapse = " ")) %>%
ungroup() %>%
unique() %>%
mutate(seria = str_replace_all(seria,"\\$.","; ")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#13: tomy
za_tomy <- data %>%
select(ZA_UWAGI) %>%
mutate(za_tomy = NA)
#14: adnotacje
za_adnotacje <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_autor %>% select(ZA_UWAGI,ZA_ADNOTACJE),by="ZA_UWAGI") %>%
left_join(.,BN_wspoltworca %>% select(ZA_UWAGI,ZA_ADNOTACJE),by="ZA_UWAGI") %>%
mutate(ZA_ADNOTACJE = paste(ifelse(is.na(ZA_ADNOTACJE.x),"",paste(as.character(ZA_ADNOTACJE.x),"# ",sep = "")),ifelse(is.na(ZA_ADNOTACJE.y),"",as.character(ZA_ADNOTACJE.y)),sep = ""),
ZA_ADNOTACJE = str_remove(ZA_ADNOTACJE,"(# )+$")) %>%
select(ZA_UWAGI,ZA_ADNOTACJE) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(ZA_ADNOTACJE))
za_adnotacje$id_grupy <- cumsum(!duplicated(za_adnotacje[1]))
za_adnotacje <- za_adnotacje[!duplicated(za_adnotacje$id_grupy),] %>%
select(-id_grupy)
#15: BN_URL
BN_URL <- data %>%
select(ZA_UWAGI,BN_URL)
#wyrównanie liczby wierszy do liczby wierszy obiektu data
BN_autor <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_autor %>% select(ZA_UWAGI,AM_AUTOR_ID,AM_NAZWISKO,AM_IMIE),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, AM_AUTOR_ID = paste(AM_AUTOR_ID, collapse="|"), AM_NAZWISKO = paste(AM_NAZWISKO, collapse="|"), AM_IMIE = paste(AM_IMIE, collapse="|"))
BN_wspoltworca <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wspoltworca %>% select(ZA_UWAGI,OS_OSOBA_ID,OS_NAZWISKO,OS_IMIE,fo_symbol),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, OS_OSOBA_ID = paste(OS_OSOBA_ID, collapse="|"), OS_NAZWISKO = paste(OS_NAZWISKO, collapse="|"), OS_IMIE = paste(OS_IMIE, collapse="|"), fo_symbol = paste(fo_symbol, collapse="|")) %>%
mutate(fo_symbol = ifelse(fo_symbol=="NULL","NA",as.character(fo_symbol)))
BN_wydawnictwo <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,WY_WYDAWNICTWO_ID,WY_NAZWA,WY_MIASTO,za_rok_wydania),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, WY_WYDAWNICTWO_ID = paste(WY_WYDAWNICTWO_ID, collapse="|"), WY_NAZWA = paste(WY_NAZWA, collapse="|"), WY_MIASTO = paste(WY_MIASTO, collapse="|"), za_rok_wydania = paste(unique(za_rok_wydania), collapse="|")) %>%
mutate(za_rok_wydania = ifelse(za_rok_wydania=="NA","",as.integer(za_rok_wydania)))
pojawi戼㸳y si攼㹡 warto㤼㹣ci NA na skutek przekszta戼㸳cenia
#połączenie wszystkich elementów w jedną tabelę
kolejnosc <- data.frame(kolejnosc=c("ZA_UWAGI","RZ_NAZWA","ZA_RO_ROK","ZA_TYPE","RZ_RODZAJ_ID","DZ_NAZWA","DZ_DZIAL_ID","TW_TWORCA_ID","AM_AUTOR_ID","AM_NAZWISKO","AM_IMIE","ZA_TYTUL","ZA_TYTUL_ORYGINALU","ZA_JEZYK_ORYGINALU","OS_OSOBA_ID","OS_NAZWISKO","OS_IMIE","fo_symbol","za_opis_wspoltworcow","wydanie","za_tomy","instytucja","WY_WYDAWNICTWO_ID","WY_MIASTO","WY_NAZWA","za_rok_wydania","za_opis_ks","seria","TW_NAZWISKO","TW_IMIE","redaktor_dzialu","ZA_ADNOTACJE","BN_URL"))
polaczone <- data %>%
select(ZA_UWAGI) %>%
left_join(.,pola_pbl,by = "ZA_UWAGI") %>%
left_join(.,BN_autor,by = "ZA_UWAGI") %>%
left_join(.,za_tytul,by = "ZA_UWAGI") %>%
left_join(.,za_tytul_oryginalu,by = "ZA_UWAGI") %>%
left_join(.,za_jezyk_oryginalu,by = "ZA_UWAGI") %>%
left_join(.,BN_wspoltworca,by = "ZA_UWAGI") %>%
left_join(.,za_opis_wspoltworcow,by = "ZA_UWAGI") %>%
left_join(.,za_wydanie,by = "ZA_UWAGI") %>%
left_join(.,za_instytucja,by = "ZA_UWAGI") %>%
left_join(.,BN_wydawnictwo,by = "ZA_UWAGI") %>%
left_join(.,za_opis_ks,by = "ZA_UWAGI") %>%
left_join(.,za_seria_wydawnicza,by = "ZA_UWAGI") %>%
left_join(.,za_tomy,by = "ZA_UWAGI") %>%
left_join(.,za_adnotacje,by = "ZA_UWAGI") %>%
left_join(.,BN_URL,by = "ZA_UWAGI") %>%
select(as.vector(kolejnosc$kolejnosc))
colnames(polaczone) <- c("rekord_BN","rz_nazwa","za_ro_rok","za_type","rz_rodzaj_id","DZ_NAZWA","DZ_DZIAL_ID","tw_tworca_id","am_autor_id","am_nazwisko","am_imie","za_tytul","za_tytul_oryginalu","za_jezyk_oryginalu","os_osoba_id","os_nazwisko","os_imie","fo_symbol","za_opis_wspoltworcow","za_wydanie","za_tomy","za_instytucja","wy_wydawnictwo_id","wy_miejsce","wy_nazwa","za_rok_wydania","za_opis_fizyczny_ksiazki","za_seria_wydawnicza","tw_nazwisko","tw_imie","pracownik","za_adnotacje","BN_URL")
#zasygnalizowanie niepoprawnego kodowania
x <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("<U\\+(....)>",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)!=0,paste(polaczone$za_adnotacje,paste("UWAGA! Błąd kodowania w polu ",as.character(names(polaczone[i]))," Znajdź frazę \"???\" i zredaguj pole",sep = ""),sep = "# "),paste("UWAGA! Błąd kodowania w polu ",as.character(names(polaczone[i]))," Znajdź frazę \"???\" i zredaguj pole",sep = "")),as.character(polaczone$za_adnotacje))
polaczone[,i] <- gsub("<U\\+(....)>", "???", polaczone[,i])
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności znaku $ w którymś z pól
X <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("\\$",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)==0,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano znak \"$\". Zredaguj treść pola.",sep = ""),paste(polaczone$za_adnotacje,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano znak \"$\". Zredaguj treść pola.",sep = ""),sep = "# ")),as.character(polaczone$za_adnotacje))
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności frazy "character(0)" w którymś z pól
X <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("character\\(0\\)",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)==0,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano frazę \"character(0)\". Zredaguj treść pola.",sep = ""),paste(polaczone$za_adnotacje,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano frazę \"character(0)\". Zredaguj treść pola.",sep = ""),sep = "# ")),as.character(polaczone$za_adnotacje))
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności znaku # w opisie współtwórców
polaczone$za_adnotacje <- ifelse(grepl("\\#",polaczone$za_opis_wspoltworcow),
ifelse(nchar(polaczone$za_adnotacje)==0,"UWAGA! Ze względu na konflikt w opisie współtwórców wybierz właściwą wartość (strefa odpowiedzialności \"#\" współtwórcy z pola 700)",paste(polaczone$za_adnotacje,"UWAGA! Ze względu na konflikt w opisie współtwórców wybierz właściwą wartość (strefa odpowiedzialności # współtwórcy z pola 700)",sep = "# ")),as.character(polaczone$za_adnotacje))
out <- cSplit(polaczone, c("am_autor_id", "am_nazwisko", "am_imie","os_osoba_id","os_nazwisko", "os_imie", "fo_symbol","wy_wydawnictwo_id","wy_miejsce","wy_nazwa"),sep = "|",direction = "long") %>%
unique()
out$rekord_BN <- ifelse(is.na(out$rekord_BN),'',as.character(out$rekord_BN))
out$rz_nazwa <- ifelse(is.na(out$rz_nazwa),'',as.character(out$rz_nazwa))
out$za_ro_rok <- ifelse(is.na(out$za_ro_rok),'',as.character(out$za_ro_rok))
out$za_type <- ifelse(is.na(out$za_type),'',as.character(out$za_type))
out$rz_rodzaj_id <- ifelse(is.na(out$rz_rodzaj_id),'',as.character(out$rz_rodzaj_id))
out$DZ_NAZWA <- ifelse(is.na(out$DZ_NAZWA),'',as.character(out$DZ_NAZWA))
out$DZ_DZIAL_ID <- ifelse(is.na(out$DZ_DZIAL_ID),'',as.character(out$DZ_DZIAL_ID))
out$tw_tworca_id <- ifelse(is.na(out$tw_tworca_id),'',as.character(out$tw_tworca_id))
out$am_autor_id <- ifelse(is.na(out$am_autor_id),'',as.character(out$am_autor_id))
out$am_nazwisko <- ifelse(is.na(out$am_nazwisko),'',as.character(out$am_nazwisko))
out$am_imie <- ifelse(is.na(out$am_imie),'',as.character(out$am_imie))
out$za_tytul <- ifelse(is.na(out$za_tytul),'',as.character(out$za_tytul))
out$za_tytul_oryginalu <- ifelse(is.na(out$za_tytul_oryginalu),'',as.character(out$za_tytul_oryginalu))
out$za_jezyk_oryginalu <- ifelse(is.na(out$za_jezyk_oryginalu),'',as.character(out$za_jezyk_oryginalu))
out$os_osoba_id <- ifelse(is.na(out$os_osoba_id),'',as.character(out$os_osoba_id))
out$os_nazwisko <- ifelse(is.na(out$os_nazwisko),'',as.character(out$os_nazwisko))
out$os_imie <- ifelse(is.na(out$os_imie),'',as.character(out$os_imie))
out$fo_symbol <- ifelse(is.na(out$fo_symbol),'',as.character(out$fo_symbol))
out$za_opis_wspoltworcow <- ifelse(is.na(out$za_opis_wspoltworcow),'',as.character(out$za_opis_wspoltworcow))
out$za_wydanie <- ifelse(is.na(out$za_wydanie),'',as.character(out$za_wydanie))
out$za_tomy <- ifelse(is.na(out$za_tomy),'',as.character(out$za_tomy))
out$za_instytucja <- ifelse(is.na(out$za_instytucja),'',as.character(out$za_instytucja))
out$wy_wydawnictwo_id <- ifelse(is.na(out$wy_wydawnictwo_id),'',as.character(out$wy_wydawnictwo_id))
out$wy_miejsce <- ifelse(is.na(out$wy_miejsce),'',as.character(out$wy_miejsce))
out$wy_nazwa <- ifelse(is.na(out$wy_nazwa),'',as.character(out$wy_nazwa))
out$za_rok_wydania <- ifelse(is.na(out$za_rok_wydania),'',as.character(out$za_rok_wydania))
out$za_opis_fizyczny_ksiazki <- ifelse(is.na(out$za_opis_fizyczny_ksiazki),'',as.character(out$za_opis_fizyczny_ksiazki))
out$za_seria_wydawnicza <- ifelse(is.na(out$za_seria_wydawnicza),'',as.character(out$za_seria_wydawnicza))
out$tw_nazwisko <- ifelse(is.na(out$tw_nazwisko),'',as.character(out$tw_nazwisko))
out$tw_imie <- ifelse(is.na(out$tw_imie),'',as.character(out$tw_imie))
out$pracownik <- ifelse(is.na(out$pracownik),'',as.character(out$pracownik))
out$za_adnotacje <- ifelse(is.na(out$za_adnotacje),'',as.character(out$za_adnotacje))
out$BN_URL <- ifelse(is.na(out$BN_URL),'',as.character(out$BN_URL))
out %$%
{ rekord_BN==lag(rekord_BN,) & rz_nazwa==lag(rz_nazwa,) & za_ro_rok==lag(za_ro_rok,) & za_type==lag(za_type,) & rz_rodzaj_id==lag(rz_rodzaj_id,) & DZ_NAZWA==lag(DZ_NAZWA,) & DZ_DZIAL_ID==lag(DZ_DZIAL_ID,) & tw_tworca_id==lag(tw_tworca_id,) & za_tytul==lag(za_tytul,) & za_tytul_oryginalu==lag(za_tytul_oryginalu,) & za_jezyk_oryginalu==lag(za_jezyk_oryginalu,) & za_opis_wspoltworcow==lag(za_opis_wspoltworcow,) & za_wydanie==lag(za_wydanie,) & za_tomy==lag(za_tomy,) & za_instytucja==lag(za_instytucja,) & za_rok_wydania==lag(za_rok_wydania,) & za_opis_fizyczny_ksiazki==lag(za_opis_fizyczny_ksiazki,) & za_seria_wydawnicza==lag(za_seria_wydawnicza,) & tw_nazwisko==lag(tw_nazwisko,) & tw_imie==lag(tw_imie,) & pracownik==lag(pracownik,) & za_adnotacje==lag(za_adnotacje,) & BN_URL==lag(BN_URL,)} %>%
as.numeric() %>%
{.} -> out$same
out$same[1] <- 0
out$dzielone <- paste(out$am_autor_id,out$am_nazwisko,out$am_imie,out$os_osoba_id,out$os_nazwisko,out$os_imie,out$fo_symbol,out$wy_wydawnictwo_id,out$wy_miejsce,out$wy_nazwa,sep = "")
out <- out %>%
filter(!(same==1&dzielone=="")) %>%
select(1:33)
out %$%
{ rekord_BN==lag(rekord_BN,) & rz_nazwa==lag(rz_nazwa,) & za_ro_rok==lag(za_ro_rok,) & za_type==lag(za_type,) & rz_rodzaj_id==lag(rz_rodzaj_id,) & DZ_NAZWA==lag(DZ_NAZWA,) & DZ_DZIAL_ID==lag(DZ_DZIAL_ID,) & tw_tworca_id==lag(tw_tworca_id,) & za_tytul==lag(za_tytul,) & za_tytul_oryginalu==lag(za_tytul_oryginalu,) & za_jezyk_oryginalu==lag(za_jezyk_oryginalu,) & za_opis_wspoltworcow==lag(za_opis_wspoltworcow,) & za_wydanie==lag(za_wydanie,) & za_tomy==lag(za_tomy,) & za_instytucja==lag(za_instytucja,) & za_rok_wydania==lag(za_rok_wydania,) & za_opis_fizyczny_ksiazki==lag(za_opis_fizyczny_ksiazki,) & za_seria_wydawnicza==lag(za_seria_wydawnicza,) & tw_nazwisko==lag(tw_nazwisko,) & tw_imie==lag(tw_imie,) & pracownik==lag(pracownik,) & za_adnotacje==lag(za_adnotacje,) & BN_URL==lag(BN_URL,)} %>%
as.numeric() %>%
{.} -> out$same
#ucięcie zbyt długich ciągów znaków, by weszły do oracle'a
dlugosci <- data.frame(pole = c("am_nazwisko", "am_imie", "za_tytul", "za_tytul_oryginalu", "za_jezyk_oryginalu", "os_nazwisko", "os_imie", "za_opis_wspoltworcow", "za_instytucja", "wy_miejsce", "wy_nazwa", "za_opis_fizyczny_ksiazki", "za_seria_wydawnicza", "tw_nazwisko", "tw_imie", "za_adnotacje"), liczba_znakow = c(50,40,500,500,100,50,40,500,255,40,255,1000,255,200,40,2000))
x <- match(dlugosci$pole,names(out))
for (i in x) {
progress(match(i,x), max.value = length(x))
dlugosc <- dlugosci$liczba_znakow[match(names(out[i]),dlugosci$pole)]
out$za_adnotacje <- ifelse(dlugosc<nchar(as.character(out[,i]))&out$za_adnotacje!="",paste(out$za_adnotacje,paste("UWAGA! Pole ",as.character(names(out[i]))," było zbyt długie i zostało przycięte. Zredaguj treść pola.",sep = ""),sep = "# "),
ifelse(dlugosc<nchar(as.character(out[,i]))&out$za_adnotacje=="",paste("UWAGA! Pole ",as.character(names(out[i]))," było zbyt długie i zostało przycięte. Zredaguj treść pola.",sep = ""),as.character(out$za_adnotacje)))
out[,i] <- ifelse(dlugosc<nchar(as.character(out[,i])),as.character(substr(out[,i],1,dlugosc)),as.character(out[,i]))
}
Progress: 1 on 16 Progress: 2 on 16 Progress: 3 on 16 Progress: 4 on 16 Progress: 5 on 16 Progress: 6 on 16 Progress: 7 on 16 Progress: 8 on 16 Progress: 9 on 16 Progress: 10 on 16 Progress: 11 on 16 Progress: 12 on 16 Progress: 13 on 16 Progress: 14 on 16 Progress: 15 on 16 Progress: 16 on 16
out$rekord_BN[out$same == 1] <- ""
out$rz_nazwa[out$same == 1] <- ""
out$za_ro_rok[out$same == 1] <- ""
out$za_type[out$same == 1] <- ""
out$rz_rodzaj_id[out$same == 1] <- ""
out$DZ_NAZWA[out$same == 1] <- ""
out$DZ_DZIAL_ID[out$same == 1] <- ""
out$tw_tworca_id[out$same == 1] <- ""
out$za_tytul[out$same == 1] <- ""
out$za_tytul_oryginalu[out$same == 1] <- ""
out$za_jezyk_oryginalu[out$same == 1] <- ""
out$za_opis_wspoltworcow[out$same == 1] <- ""
out$za_wydanie[out$same == 1] <- ""
out$za_tomy[out$same == 1] <- ""
out$za_instytucja[out$same == 1] <- ""
out$za_rok_wydania[out$same == 1] <- ""
out$za_opis_fizyczny_ksiazki[out$same == 1] <- ""
out$za_seria_wydawnicza[out$same == 1] <- ""
out$tw_nazwisko[out$same == 1] <- ""
out$tw_imie[out$same == 1] <- ""
out$pracownik[out$same == 1] <- ""
out$za_adnotacje[out$same == 1] <- ""
out$BN_URL[out$same == 1] <- ""
out <- out %>%
select(1:33)
#pętla zapisująca po ok. 2000 wierszy z uwzględnieniem kompletności rekordów bibliograficznych rozpisanych na kilka wierszy
out <- out %>%
mutate(podzial = ifelse(rekord_BN!="",as.character(rekord_BN),NA)) %>%
fill(podzial)
ile <- unique(out$podzial)
ile <- split(unique(ile), ceiling(seq_along(unique(ile))/1500))
x <- 1:length(ile)
for (i in x) {
progress(match(i,x), max.value = length(x))
final <- out %>%
filter(podzial %in% ile[[i]]) %>%
select(-podzial)
write.xlsx(final, paste("C:/Users/",employee_name,"/Desktop/",import_year,"_przedmiotowa_do_importu",i,".xlsx",sep = ""),sheetName = "gotowe")
}
Progress: 1 on 2 Progress: 2 on 2
bn_ok <- chunk11
data <- bn_ok %>%
filter(rodzaj_ksiazki=="antologia") %>%
mutate(redaktor_dzialu = paste(redaktor_dzialu,"_ant",sep = ""))
#uwolnienie kolumn z danymi z bn i przetworzenie do PBL
#1: za_uwagi, rz_nazwa, za_ro_rok, za_type, rz_rodzaj_id, tw_tworca_id, tw_nazwisko, tw_imie, dz_dzial_id, dz_nazwa, redaktor_dzialu
pola_pbl <- data %>%
select(ZA_UWAGI, RZ_NAZWA, ZA_RO_ROK = rok, RZ_RODZAJ_ID, TW_TWORCA_ID, TW_NAZWISKO, TW_IMIE, DZ_DZIAL_ID, DZ_NAZWA, redaktor_dzialu) %>%
mutate(ZA_TYPE = "KS")
#2: autor
BN_autor <- data %>%
select(ZA_UWAGI) %>%
mutate(AM_AUTOR_ID = NA,
AM_NAZWISKO = NA,
AM_IMIE = NA)
#adnotacje z autorów
#w antologii adnotacja musi być wcześniej, żeby na górze było info o tekstach autorów
ZA_ADNOTACJE <- data %>%
select(X100,X245,ZA_UWAGI)
#pole 100
marc_field_100 <- ZA_ADNOTACJE %>%
select(ZA_UWAGI,X100)%>%
filter(X100!="") %>%
mutate(X100=str_replace_all(X100,"(^|\\|)","~\\1")) %>%
cSplit(.,"X100",sep = "~",direction = "long") %>%
filter(X100!="") %>%
mutate(X100=str_remove_all(X100,"^\\|")) %>%
mutate(indicator = str_replace_all(X100,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(ZA_ADNOTACJE$X100,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_100)[1]))
colnames(empty_table) <-subfield_list
marc_field_100<-cbind(marc_field_100,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_100$X100 <- str_replace(marc_field_100$X100,subfield_list_char[i],"|\\1")
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_100[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_100$X100),str_replace_all(gsub(string,"\\3",marc_field_100$X100),"\\${2}.", "~"),NA)
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
#tutaj może być błąd ze względu na brak kolumny $b, wtedy należy zmienić linię z selectem i zakomentować linię: mutate(`$a` = ifelse(!is.na(`$b`),paste(`$a`,`$b`,sep = " "),as.character(`$a`))) %>%
ZA_ADNOTACJE <- marc_field_100 %>%
#select(ZA_UWAGI,`$a`,`$b`) %>%
select(ZA_UWAGI,`$a`) %>%
unique() %>%
#mutate(`$a` = ifelse(!is.na(`$b`),paste(`$a`,`$b`,sep = " "),as.character(`$a`))) %>%
mutate(`$a` = str_remove(`$a`,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)")) %>%
unique() %>%
mutate(AM_NAZWISKO = ifelse(grepl("\\|",`$a`), str_replace_all(str_remove_all(`$a`,","),"\\|",", "),
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\1"),as.character(`$a`))),
AM_IMIE = ifelse(grepl("\\|",`$a`),"*",
ifelse(grepl(",",`$a`),str_replace_all(`$a`,"(.*?)(, )(.*)","\\3"),"*"))) %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE) %>%
unite("ZA_ADNOTACJE", AM_IMIE:AM_NAZWISKO, sep = " ") %>%
group_by(ZA_UWAGI) %>%
mutate(ZA_ADNOTACJE = paste("[Teksty aut.:]",paste(ZA_ADNOTACJE,collapse = ", "),sep = " ")) %>%
ungroup() %>%
unique() %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#3: tytuł
#pole 245
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,`$a`,`$b`,`$n`,`$p`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = " "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = " "),
`$n` = paste(ifelse(is.na(`$n`),"",as.character(`$n`)),collapse = " "),
`$p` = paste(ifelse(is.na(`$p`),"",as.character(`$p`)),collapse = " ")) %>%
ungroup() %>%
unique() %>%
unite("ZA_TYTUL",`$a`:`$p`,sep = " ",na.rm = TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL," +"," "),
ZA_TYTUL = str_remove(ZA_TYTUL, "\\s+\\/\\s{0,}$"),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\.{3} \\.{3}","... "),
ZA_TYTUL = str_replace_all(ZA_TYTUL," ; ",". "),
ZA_TYTUL = gsub("( : )(.)",". \\U\\2",perl=TRUE,ZA_TYTUL)) %>%
select(ZA_UWAGI,ZA_TYTUL)
#dopisanie gatunku do przedmiotowej na podstawie 655 i 650
gatunki_pbl <- data.frame(gatunek = c("aforyzm", "album", "antologia", "autobiografia", "dziennik", "esej", "felieton", "inne", "kazanie", "list", "miniatura prozą", "opowiadanie", "poemat", "powieść", "proza", "proza poetycka", "reportaż", "rozmyślanie religijne", "rysunek, obraz", "scenariusz", "szkic", "tekst biblijny", "tekst dramatyczny", "dramat", "wiersz", "wspomnienia", "wypowiedź", "pamiętniki", "poezja", "literatura podróżnicza", "satyra", "piosenka"))
#dramat, pamiętniki, poezja, literatura podróżnicza, satyra, piosenka
gatunki_bn <- data %>%
select(ZA_UWAGI,X655,X650)
gatunki_bn <- sqldf("select *
from gatunki_bn
left join gatunki_pbl on lower(gatunki_bn.X655) like '%'||gatunki_pbl.gatunek||'%'")
gatunki_bn <- sqldf("select *
from gatunki_bn
left join gatunki_pbl on lower(gatunki_bn.X650) like '%'||gatunki_pbl.gatunek||'%'")
colnames(gatunki_bn)[5] <- "gatunek2"
gatunki_bn <- gatunki_bn %>%
mutate(gatunek = ifelse(is.na(gatunek)&!is.na(gatunek2),as.character(gatunek2),as.character(gatunek))) %>%
filter(!is.na(gatunek)) %>%
select(ZA_UWAGI,gatunek) %>%
mutate(gatunek = ifelse(gatunek=="dramat","tekst dramatyczny",
ifelse(gatunek=="pamiętniki","wspomnienia",
ifelse(gatunek=="poezja","wiersz",
ifelse(gatunek=="literatura podróżnicza","reportaż",
ifelse(gatunek=="piosenka","wiersz",as.character(gatunek))))))) %>%
group_by(ZA_UWAGI) %>%
mutate(gatunek = paste(gatunek,collapse = ", ")) %>%
ungroup() %>%
unique() %>%
mutate(gatunek = gsub("(^.)","\\U\\1",perl = TRUE, gatunek))
#połączenie tytułu z gatunkiem
za_tytul <- marc_field_245 %>%
left_join(.,gatunki_bn,by="ZA_UWAGI") %>%
mutate(gatunek = paste("[",gatunek,"]",sep = ""),
gatunek = ifelse(gatunek=="[NA]",NA,as.character(gatunek))) %>%
unite("ZA_TYTUL", ZA_TYTUL:gatunek, sep = ". ",na.rm=TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\. \\.",". "),
ZA_TYTUL = str_replace(ZA_TYTUL,"(\\!)(\\.)|(\\?)(\\.)","\\1"))
#4: tytuł oryginału
#pole 246
marc_field_246 <- data %>%
select(ZA_UWAGI,X246)%>%
filter(X246!="") %>%
mutate(X246=str_remove_all(X246,"~"),
X246=str_replace_all(X246,"(^|\\|)","~\\1")) %>%
cSplit(.,"X246",sep = "~",direction = "long") %>%
filter(X246!="") %>%
mutate(X246=str_remove_all(X246,"^\\|")) %>%
mutate(indicator = str_replace_all(X246,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X246,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_246)[1]))
colnames(empty_table) <-subfield_list
marc_field_246<-cbind(marc_field_246,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_246$X246 <- str_replace(marc_field_246$X246,subfield_list_char[i],"|\\1")
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_246[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_246$X246),str_replace_all(gsub(string,"\\3",marc_field_246$X246),"\\${2}.", "~"),NA)
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
if("$n" %in% colnames(marc_field_245)) {
marc_field_246 <- marc_field_246 %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`,`$b`,`$n`,`$p`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = ""),
`$n` = paste(ifelse(is.na(`$n`),"",as.character(`$n`)),collapse = ""),
`$p` = paste(ifelse(is.na(`$p`),"",as.character(`$p`)),collapse = "")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`:`$p`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
} else {
marc_field_246 <- marc_field_246 %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`,`$b`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = "")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`:`$b`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
}
#pole 500
marc_field_500 <- data %>%
select(ZA_UWAGI,X500)%>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"~"),
X500=str_replace_all(X500,"(^|\\|)","~\\1")) %>%
cSplit(.,"X500",sep = "~",direction = "long") %>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"^\\|")) %>%
mutate(indicator = str_replace_all(X500,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X500,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_500)[1]))
colnames(empty_table) <-subfield_list
marc_field_500<-cbind(marc_field_500,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_500$X500 <- str_replace(marc_field_500$X500,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_500[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_500$X500),str_replace_all(gsub(string,"\\3",marc_field_500$X500),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_500 <- marc_field_500 %>%
filter(grepl("oryg\\.\\:",X500)) %>%
mutate(X500 = str_remove(`$a`,"^Tyt\\. oryg\\.: |^Tyt\\, oryg\\.: |^.*?tyt\\. oryg\\.: "),
X500 = str_remove(X500, "\\s+\\/\\s{0,}$"),
X500 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X500),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X500),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X500),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X500),as.character(X500))))),
X500 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X500),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X500),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X500),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X500),as.character(X500))))),
X500 = str_replace_all(X500,"\\.{3} \\.{3}","... "),
X500 = str_remove(X500, "\\.$"),
X500 = str_remove(X500,"(,{0,1} {0,1})\\d{4}.*$|(, t|. T)yt. oryg. cyklu:")) %>%
select(ZA_UWAGI,X500)
#tytuł oryginału
za_tytul_oryginalu <- data %>%
select(ZA_UWAGI) %>%
left_join(.,marc_field_246,by="ZA_UWAGI") %>%
left_join(.,marc_field_500,by="ZA_UWAGI") %>%
mutate(X500 = ifelse(is.na(X500),NA,
ifelse(grepl("oryg",X500),NA,as.character(X500))),
X500 = ifelse(!is.na(X500)&grepl("\\. - ",X500),str_replace(X500,"(.*?)(\\. - .*$)","\\1"),as.character(X500)),
X500 = ifelse(!is.na(X500)&grepl("Na książce pseud",X500),str_replace(X500,"(.*?)(\\. Na książce pseud.*$)","\\1"),as.character(X500)),
X500 = ifelse(!is.na(X500)&grepl("Przekł\\. wg",X500),str_replace(X500,"(.*?)(\\. Przekł\\. wg.*$)","\\1"),as.character(X500)),
ZA_TYTUL_ORYGINALU = ifelse(is.na(X246)&is.na(X500),NA,
ifelse(!is.na(X500),as.character(X500),as.character(X246))),
ZA_TYTUL_ORYGINALU = str_remove_all(ZA_TYTUL_ORYGINALU,'\\"')) %>%
select(ZA_UWAGI,ZA_TYTUL_ORYGINALU)
#5: język oryginału
marc_field_041 <- data %>%
select(ZA_UWAGI,X041)%>%
filter(X041!="") %>%
mutate(X041=str_replace_all(X041,"(^|\\|)","~\\1")) %>%
cSplit(.,"X041",sep = "~",direction = "long") %>%
filter(X041!="") %>%
mutate(X041=str_remove_all(X041,"^\\|")) %>%
mutate(indicator = str_replace_all(X041,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X041,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_041)[1]))
colnames(empty_table) <-subfield_list
marc_field_041<-cbind(marc_field_041,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_041$X041 <- str_replace(marc_field_041$X041,subfield_list_char[i],"|\\1")
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_041[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_041$X041),str_replace_all(gsub(string,"\\3",marc_field_041$X041),"\\${2}.", "~"),NA)
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
za_jezyk_oryginalu <- data %>%
select(ZA_UWAGI) %>%
left_join(.,marc_field_041 %>% select(ZA_UWAGI,ZA_JEZYK_ORYGINALU = `$a`),by="ZA_UWAGI") %>%
mutate(ZA_JEZYK_ORYGINALU = str_replace_all(ZA_JEZYK_ORYGINALU,"\\$a",",")) %>%
unique()
#6: współtwórcy
marc_field_700 <- data %>%
select(ZA_UWAGI,X700)%>%
filter(X700!="") %>%
mutate(X700=str_replace_all(X700,"(..\\$a)","|\\1"),
X700=str_replace_all(X700,"(^|\\|)","~\\1")) %>%
cSplit(.,"X700",sep = "~",direction = "long") %>%
filter(X700!="") %>%
mutate(X700=str_remove_all(X700,"^\\|")) %>%
mutate(indicator = str_replace_all(X700,"(^.*?)(\\$.*)","\\1")) %>%
filter(X700!="")
subfield_list<- str_extract_all(data$X700,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_700)[1]))
colnames(empty_table) <-subfield_list
marc_field_700<-cbind(marc_field_700,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_700$X700 <- str_replace(marc_field_700$X700,subfield_list_char[i],"|\\1")
}
Progress: 1 on 8 Progress: 2 on 8 Progress: 3 on 8 Progress: 4 on 8 Progress: 5 on 8 Progress: 6 on 8 Progress: 7 on 8 Progress: 8 on 8
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_700[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_700$X700),str_replace_all(gsub(string,"\\3",marc_field_700$X700),"\\${2}.", "~"),NA)
}
Progress: 1 on 8 Progress: 2 on 8 Progress: 3 on 8 Progress: 4 on 8 Progress: 5 on 8 Progress: 6 on 8 Progress: 7 on 8 Progress: 8 on 8
BN_wspoltworca <- marc_field_700 %>%
select(ZA_UWAGI,osoba = `$a`,funkcja = `$e`) %>%
filter(!is.na(funkcja)) %>%
mutate(osoba = str_remove(osoba,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)"),
OS_NAZWISKO = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\1"),as.character(osoba)),
OS_IMIE = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\3"),"*"),
ws_prosty = str_replace_all(str_to_lower(osoba), "\\W", ""),
fu_prosta = str_replace_all(str_to_lower(funkcja), "\\W", "")) %>%
left_join(.,PBL_wspoltworcy %>% select(OS_OSOBA_ID,OS_LICZBA_ZAPISOW,nazwa_prosta),by=c("ws_prosty"="nazwa_prosta")) %>%
arrange(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,-OS_LICZBA_ZAPISOW)
BN_wspoltworca$id_grupy <- cumsum(!duplicated(BN_wspoltworca[1:2]))
BN_wspoltworca <- BN_wspoltworca[!duplicated(BN_wspoltworca$id_grupy),] %>%
left_join(.,PBL_funkcje,by=c("fu_prosta"="nazwa")) %>%
mutate(fo_symbol = ifelse(fo_symbol=="NULL",NA,as.character(fo_symbol))) %>%
select(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,OS_OSOBA_ID,fo_symbol,fo_nazwa,funkcja)
#tutaj przeszukać X245 i znaleźć błędy współtwórców
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,X245c=`$c`)
BN_wspoltworca <- BN_wspoltworca %>%
left_join(.,marc_field_245,by="ZA_UWAGI")
x <- 1:lengths(BN_wspoltworca[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
BN_wspoltworca$czy_nazwisko[i] <- str_detect(BN_wspoltworca$X245c[i],BN_wspoltworca$OS_NAZWISKO[i])
BN_wspoltworca$czy_imie[i] <- grepl(BN_wspoltworca$OS_IMIE[i],BN_wspoltworca$X245c[i])
}
Progress: 1 on 755 Progress: 2 on 755 Progress: 3 on 755 Progress: 4 on 755 Progress: 5 on 755 Progress: 6 on 755 Progress: 7 on 755 Progress: 8 on 755 Progress: 9 on 755 Progress: 10 on 755 Progress: 11 on 755 Progress: 12 on 755 Progress: 13 on 755 Progress: 14 on 755 Progress: 15 on 755 Progress: 16 on 755 Progress: 17 on 755 Progress: 18 on 755 Progress: 19 on 755 Progress: 20 on 755 Progress: 21 on 755 Progress: 22 on 755 Progress: 23 on 755 Progress: 24 on 755 Progress: 25 on 755 Progress: 26 on 755 Progress: 27 on 755 Progress: 28 on 755 Progress: 29 on 755 Progress: 30 on 755 Progress: 31 on 755 Progress: 32 on 755 Progress: 33 on 755 Progress: 34 on 755 Progress: 35 on 755 Progress: 36 on 755 Progress: 37 on 755 Progress: 38 on 755 Progress: 39 on 755 Progress: 40 on 755 Progress: 41 on 755 Progress: 42 on 755 Progress: 43 on 755 Progress: 44 on 755 Progress: 45 on 755 Progress: 46 on 755 Progress: 47 on 755 Progress: 48 on 755 Progress: 49 on 755 Progress: 50 on 755 Progress: 51 on 755 Progress: 52 on 755 Progress: 53 on 755 Progress: 54 on 755 Progress: 55 on 755 Progress: 56 on 755 Progress: 57 on 755 Progress: 58 on 755 Progress: 59 on 755 Progress: 60 on 755 Progress: 61 on 755 Progress: 62 on 755 Progress: 63 on 755 Progress: 64 on 755 Progress: 65 on 755 Progress: 66 on 755 Progress: 67 on 755 Progress: 68 on 755 Progress: 69 on 755 Progress: 70 on 755 Progress: 71 on 755 Progress: 72 on 755 Progress: 73 on 755 Progress: 74 on 755 Progress: 75 on 755 Progress: 76 on 755 Progress: 77 on 755 Progress: 78 on 755 Progress: 79 on 755 Progress: 80 on 755 Progress: 81 on 755 Progress: 82 on 755 Progress: 83 on 755 Progress: 84 on 755 Progress: 85 on 755 Progress: 86 on 755 Progress: 87 on 755 Progress: 88 on 755 Progress: 89 on 755 Progress: 90 on 755 Progress: 91 on 755 Progress: 92 on 755 Progress: 93 on 755 Progress: 94 on 755 Progress: 95 on 755 Progress: 96 on 755 Progress: 97 on 755 Progress: 98 on 755 Progress: 99 on 755 Progress: 100 on 755 Progress: 101 on 755 Progress: 102 on 755 Progress: 103 on 755 Progress: 104 on 755 Progress: 105 on 755 Progress: 106 on 755 Progress: 107 on 755 Progress: 108 on 755 Progress: 109 on 755 Progress: 110 on 755 Progress: 111 on 755 Progress: 112 on 755 Progress: 113 on 755 Progress: 114 on 755 Progress: 115 on 755 Progress: 116 on 755 Progress: 117 on 755 Progress: 118 on 755 Progress: 119 on 755 Progress: 120 on 755 Progress: 121 on 755 Progress: 122 on 755 Progress: 123 on 755 Progress: 124 on 755 Progress: 125 on 755 Progress: 126 on 755 Progress: 127 on 755 Progress: 128 on 755 Progress: 129 on 755 Progress: 130 on 755 Progress: 131 on 755 Progress: 132 on 755 Progress: 133 on 755 Progress: 134 on 755 Progress: 135 on 755 Progress: 136 on 755 Progress: 137 on 755 Progress: 138 on 755 Progress: 139 on 755 Progress: 140 on 755 Progress: 141 on 755 Progress: 142 on 755 Progress: 143 on 755 Progress: 144 on 755 Progress: 145 on 755 Progress: 146 on 755 Progress: 147 on 755 Progress: 148 on 755 Progress: 149 on 755 Progress: 150 on 755 Progress: 151 on 755 Progress: 152 on 755 Progress: 153 on 755 Progress: 154 on 755 Progress: 155 on 755 Progress: 156 on 755 Progress: 157 on 755 Progress: 158 on 755 Progress: 159 on 755 Progress: 160 on 755 Progress: 161 on 755 Progress: 162 on 755 Progress: 163 on 755 Progress: 164 on 755 Progress: 165 on 755 Progress: 166 on 755 Progress: 167 on 755 Progress: 168 on 755 Progress: 169 on 755 Progress: 170 on 755 Progress: 171 on 755 Progress: 172 on 755 Progress: 173 on 755 Progress: 174 on 755 Progress: 175 on 755 Progress: 176 on 755 Progress: 177 on 755 Progress: 178 on 755 Progress: 179 on 755 Progress: 180 on 755 Progress: 181 on 755 Progress: 182 on 755 Progress: 183 on 755 Progress: 184 on 755 Progress: 185 on 755 Progress: 186 on 755 Progress: 187 on 755 Progress: 188 on 755 Progress: 189 on 755 Progress: 190 on 755 Progress: 191 on 755 Progress: 192 on 755 Progress: 193 on 755 Progress: 194 on 755 Progress: 195 on 755 Progress: 196 on 755 Progress: 197 on 755 Progress: 198 on 755 Progress: 199 on 755 Progress: 200 on 755 Progress: 201 on 755 Progress: 202 on 755 Progress: 203 on 755 Progress: 204 on 755 Progress: 205 on 755 Progress: 206 on 755 Progress: 207 on 755 Progress: 208 on 755 Progress: 209 on 755 Progress: 210 on 755 Progress: 211 on 755 Progress: 212 on 755 Progress: 213 on 755 Progress: 214 on 755 Progress: 215 on 755 Progress: 216 on 755 Progress: 217 on 755 Progress: 218 on 755 Progress: 219 on 755 Progress: 220 on 755 Progress: 221 on 755 Progress: 222 on 755 Progress: 223 on 755 Progress: 224 on 755 Progress: 225 on 755 Progress: 226 on 755 Progress: 227 on 755 Progress: 228 on 755 Progress: 229 on 755 Progress: 230 on 755 Progress: 231 on 755 Progress: 232 on 755 Progress: 233 on 755 Progress: 234 on 755 Progress: 235 on 755 Progress: 236 on 755 Progress: 237 on 755 Progress: 238 on 755 Progress: 239 on 755 Progress: 240 on 755 Progress: 241 on 755 Progress: 242 on 755 Progress: 243 on 755 Progress: 244 on 755 Progress: 245 on 755 Progress: 246 on 755 Progress: 247 on 755 Progress: 248 on 755 Progress: 249 on 755 Progress: 250 on 755 Progress: 251 on 755 Progress: 252 on 755 Progress: 253 on 755 Progress: 254 on 755 Progress: 255 on 755 Progress: 256 on 755 Progress: 257 on 755 Progress: 258 on 755 Progress: 259 on 755 Progress: 260 on 755 Progress: 261 on 755 Progress: 262 on 755 Progress: 263 on 755 Progress: 264 on 755 Progress: 265 on 755 Progress: 266 on 755 Progress: 267 on 755 Progress: 268 on 755 Progress: 269 on 755 Progress: 270 on 755 Progress: 271 on 755 Progress: 272 on 755 Progress: 273 on 755 Progress: 274 on 755 Progress: 275 on 755 Progress: 276 on 755 Progress: 277 on 755 Progress: 278 on 755 Progress: 279 on 755 Progress: 280 on 755 Progress: 281 on 755 Progress: 282 on 755 Progress: 283 on 755 Progress: 284 on 755 Progress: 285 on 755 Progress: 286 on 755 Progress: 287 on 755 Progress: 288 on 755 Progress: 289 on 755 Progress: 290 on 755 Progress: 291 on 755 Progress: 292 on 755 Progress: 293 on 755 Progress: 294 on 755 Progress: 295 on 755 Progress: 296 on 755 Progress: 297 on 755 Progress: 298 on 755 Progress: 299 on 755 Progress: 300 on 755 Progress: 301 on 755 Progress: 302 on 755 Progress: 303 on 755 Progress: 304 on 755 Progress: 305 on 755 Progress: 306 on 755 Progress: 307 on 755 Progress: 308 on 755 Progress: 309 on 755 Progress: 310 on 755 Progress: 311 on 755 Progress: 312 on 755 Progress: 313 on 755 Progress: 314 on 755 Progress: 315 on 755 Progress: 316 on 755 Progress: 317 on 755 Progress: 318 on 755 Progress: 319 on 755 Progress: 320 on 755 Progress: 321 on 755 Progress: 322 on 755 Progress: 323 on 755 Progress: 324 on 755 Progress: 325 on 755 Progress: 326 on 755 Progress: 327 on 755 Progress: 328 on 755 Progress: 329 on 755 Progress: 330 on 755 Progress: 331 on 755 Progress: 332 on 755 Progress: 333 on 755 Progress: 334 on 755 Progress: 335 on 755 Progress: 336 on 755 Progress: 337 on 755 Progress: 338 on 755 Progress: 339 on 755 Progress: 340 on 755 Progress: 341 on 755 Progress: 342 on 755 Progress: 343 on 755 Progress: 344 on 755 Progress: 345 on 755 Progress: 346 on 755 Progress: 347 on 755 Progress: 348 on 755 Progress: 349 on 755 Progress: 350 on 755 Progress: 351 on 755 Progress: 352 on 755 Progress: 353 on 755 Progress: 354 on 755 Progress: 355 on 755 Progress: 356 on 755 Progress: 357 on 755 Progress: 358 on 755 Progress: 359 on 755 Progress: 360 on 755 Progress: 361 on 755 Progress: 362 on 755 Progress: 363 on 755 Progress: 364 on 755 Progress: 365 on 755 Progress: 366 on 755 Progress: 367 on 755 Progress: 368 on 755 Progress: 369 on 755 Progress: 370 on 755 Progress: 371 on 755 Progress: 372 on 755 Progress: 373 on 755 Progress: 374 on 755 Progress: 375 on 755 Progress: 376 on 755 Progress: 377 on 755 Progress: 378 on 755 Progress: 379 on 755 Progress: 380 on 755 Progress: 381 on 755 Progress: 382 on 755 Progress: 383 on 755 Progress: 384 on 755 Progress: 385 on 755 Progress: 386 on 755 Progress: 387 on 755 Progress: 388 on 755 Progress: 389 on 755 Progress: 390 on 755 Progress: 391 on 755 Progress: 392 on 755 Progress: 393 on 755 Progress: 394 on 755 Progress: 395 on 755 Progress: 396 on 755 Progress: 397 on 755 Progress: 398 on 755 Progress: 399 on 755 Progress: 400 on 755 Progress: 401 on 755 Progress: 402 on 755 Progress: 403 on 755 Progress: 404 on 755 Progress: 405 on 755 Progress: 406 on 755 Progress: 407 on 755 Progress: 408 on 755 Progress: 409 on 755 Progress: 410 on 755 Progress: 411 on 755 Progress: 412 on 755 Progress: 413 on 755 Progress: 414 on 755 Progress: 415 on 755 Progress: 416 on 755 Progress: 417 on 755 Progress: 418 on 755 Progress: 419 on 755 Progress: 420 on 755 Progress: 421 on 755 Progress: 422 on 755 Progress: 423 on 755 Progress: 424 on 755 Progress: 425 on 755 Progress: 426 on 755 Progress: 427 on 755 Progress: 428 on 755 Progress: 429 on 755 Progress: 430 on 755 Progress: 431 on 755 Progress: 432 on 755 Progress: 433 on 755 Progress: 434 on 755 Progress: 435 on 755 Progress: 436 on 755 Progress: 437 on 755 Progress: 438 on 755 Progress: 439 on 755 Progress: 440 on 755 Progress: 441 on 755 Progress: 442 on 755 Progress: 443 on 755 Progress: 444 on 755 Progress: 445 on 755 Progress: 446 on 755 Progress: 447 on 755 Progress: 448 on 755 Progress: 449 on 755 Progress: 450 on 755 Progress: 451 on 755 Progress: 452 on 755 Progress: 453 on 755 Progress: 454 on 755 Progress: 455 on 755 Progress: 456 on 755 Progress: 457 on 755 Progress: 458 on 755 Progress: 459 on 755 Progress: 460 on 755 Progress: 461 on 755 Progress: 462 on 755 Progress: 463 on 755 Progress: 464 on 755 Progress: 465 on 755 Progress: 466 on 755 Progress: 467 on 755 Progress: 468 on 755 Progress: 469 on 755 Progress: 470 on 755 Progress: 471 on 755 Progress: 472 on 755 Progress: 473 on 755 Progress: 474 on 755 Progress: 475 on 755 Progress: 476 on 755 Progress: 477 on 755 Progress: 478 on 755 Progress: 479 on 755 Progress: 480 on 755 Progress: 481 on 755 Progress: 482 on 755 Progress: 483 on 755 Progress: 484 on 755 Progress: 485 on 755 Progress: 486 on 755 Progress: 487 on 755 Progress: 488 on 755 Progress: 489 on 755 Progress: 490 on 755 Progress: 491 on 755 Progress: 492 on 755 Progress: 493 on 755 Progress: 494 on 755 Progress: 495 on 755 Progress: 496 on 755 Progress: 497 on 755 Progress: 498 on 755 Progress: 499 on 755 Progress: 500 on 755 Progress: 501 on 755 Progress: 502 on 755 Progress: 503 on 755 Progress: 504 on 755 Progress: 505 on 755 Progress: 506 on 755 Progress: 507 on 755 Progress: 508 on 755 Progress: 509 on 755 Progress: 510 on 755 Progress: 511 on 755 Progress: 512 on 755 Progress: 513 on 755 Progress: 514 on 755 Progress: 515 on 755 Progress: 516 on 755 Progress: 517 on 755 Progress: 518 on 755 Progress: 519 on 755 Progress: 520 on 755 Progress: 521 on 755 Progress: 522 on 755 Progress: 523 on 755 Progress: 524 on 755 Progress: 525 on 755 Progress: 526 on 755 Progress: 527 on 755 Progress: 528 on 755 Progress: 529 on 755 Progress: 530 on 755 Progress: 531 on 755 Progress: 532 on 755 Progress: 533 on 755 Progress: 534 on 755 Progress: 535 on 755 Progress: 536 on 755 Progress: 537 on 755 Progress: 538 on 755 Progress: 539 on 755 Progress: 540 on 755 Progress: 541 on 755 Progress: 542 on 755 Progress: 543 on 755 Progress: 544 on 755 Progress: 545 on 755 Progress: 546 on 755 Progress: 547 on 755 Progress: 548 on 755 Progress: 549 on 755 Progress: 550 on 755 Progress: 551 on 755 Progress: 552 on 755 Progress: 553 on 755 Progress: 554 on 755 Progress: 555 on 755 Progress: 556 on 755 Progress: 557 on 755 Progress: 558 on 755 Progress: 559 on 755 Progress: 560 on 755 Progress: 561 on 755 Progress: 562 on 755 Progress: 563 on 755 Progress: 564 on 755 Progress: 565 on 755 Progress: 566 on 755 Progress: 567 on 755 Progress: 568 on 755 Progress: 569 on 755 Progress: 570 on 755 Progress: 571 on 755 Progress: 572 on 755 Progress: 573 on 755 Progress: 574 on 755 Progress: 575 on 755 Progress: 576 on 755 Progress: 577 on 755 Progress: 578 on 755 Progress: 579 on 755 Progress: 580 on 755 Progress: 581 on 755 Progress: 582 on 755 Progress: 583 on 755 Progress: 584 on 755 Progress: 585 on 755 Progress: 586 on 755 Progress: 587 on 755 Progress: 588 on 755 Progress: 589 on 755 Progress: 590 on 755 Progress: 591 on 755 Progress: 592 on 755 Progress: 593 on 755 Progress: 594 on 755 Progress: 595 on 755 Progress: 596 on 755 Progress: 597 on 755 Progress: 598 on 755 Progress: 599 on 755 Progress: 600 on 755 Progress: 601 on 755 Progress: 602 on 755 Progress: 603 on 755 Progress: 604 on 755 Progress: 605 on 755 Progress: 606 on 755 Progress: 607 on 755 Progress: 608 on 755 Progress: 609 on 755 Progress: 610 on 755 Progress: 611 on 755 Progress: 612 on 755 Progress: 613 on 755 Progress: 614 on 755 Progress: 615 on 755 Progress: 616 on 755 Progress: 617 on 755 Progress: 618 on 755 Progress: 619 on 755 Progress: 620 on 755 Progress: 621 on 755 Progress: 622 on 755 Progress: 623 on 755 Progress: 624 on 755 Progress: 625 on 755 Progress: 626 on 755 Progress: 627 on 755 Progress: 628 on 755 Progress: 629 on 755 Progress: 630 on 755 Progress: 631 on 755 Progress: 632 on 755 Progress: 633 on 755 Progress: 634 on 755 Progress: 635 on 755 Progress: 636 on 755 Progress: 637 on 755 Progress: 638 on 755 Progress: 639 on 755 Progress: 640 on 755 Progress: 641 on 755 Progress: 642 on 755 Progress: 643 on 755 Progress: 644 on 755 Progress: 645 on 755 Progress: 646 on 755 Progress: 647 on 755 Progress: 648 on 755 Progress: 649 on 755 Progress: 650 on 755 Progress: 651 on 755 Progress: 652 on 755 Progress: 653 on 755 Progress: 654 on 755 Progress: 655 on 755 Progress: 656 on 755 Progress: 657 on 755 Progress: 658 on 755 Progress: 659 on 755 Progress: 660 on 755 Progress: 661 on 755 Progress: 662 on 755 Progress: 663 on 755 Progress: 664 on 755 Progress: 665 on 755 Progress: 666 on 755 Progress: 667 on 755 Progress: 668 on 755 Progress: 669 on 755 Progress: 670 on 755 Progress: 671 on 755 Progress: 672 on 755 Progress: 673 on 755 Progress: 674 on 755 Progress: 675 on 755 Progress: 676 on 755 Progress: 677 on 755 Progress: 678 on 755 Progress: 679 on 755 Progress: 680 on 755 Progress: 681 on 755 Progress: 682 on 755 Progress: 683 on 755 Progress: 684 on 755 Progress: 685 on 755 Progress: 686 on 755 Progress: 687 on 755 Progress: 688 on 755 Progress: 689 on 755 Progress: 690 on 755 Progress: 691 on 755 Progress: 692 on 755 Progress: 693 on 755 Progress: 694 on 755 Progress: 695 on 755 Progress: 696 on 755 Progress: 697 on 755 Progress: 698 on 755 Progress: 699 on 755 Progress: 700 on 755 Progress: 701 on 755 Progress: 702 on 755 Progress: 703 on 755 Progress: 704 on 755 Progress: 705 on 755 Progress: 706 on 755 Progress: 707 on 755 Progress: 708 on 755 Progress: 709 on 755 Progress: 710 on 755 Progress: 711 on 755 Progress: 712 on 755 Progress: 713 on 755 Progress: 714 on 755 Progress: 715 on 755 Progress: 716 on 755 Progress: 717 on 755 Progress: 718 on 755 Progress: 719 on 755 Progress: 720 on 755 Progress: 721 on 755 Progress: 722 on 755 Progress: 723 on 755 Progress: 724 on 755 Progress: 725 on 755 Progress: 726 on 755 Progress: 727 on 755 Progress: 728 on 755 Progress: 729 on 755 Progress: 730 on 755 Progress: 731 on 755 Progress: 732 on 755 Progress: 733 on 755 Progress: 734 on 755 Progress: 735 on 755 Progress: 736 on 755 Progress: 737 on 755 Progress: 738 on 755 Progress: 739 on 755 Progress: 740 on 755 Progress: 741 on 755 Progress: 742 on 755 Progress: 743 on 755 Progress: 744 on 755 Progress: 745 on 755 Progress: 746 on 755 Progress: 747 on 755 Progress: 748 on 755 Progress: 749 on 755 Progress: 750 on 755 Progress: 751 on 755 Progress: 752 on 755 Progress: 753 on 755 Progress: 754 on 755 Progress: 755 on 755
BN_wspoltworca <- BN_wspoltworca %>%
mutate(ZA_ADNOTACJE = ifelse(czy_nazwisko==FALSE|czy_imie==FALSE,paste("UWAGA! Konflikt w danych osobowych w polach 700 i 245. Porównaj pola współtórców w formularzu z polem BN: ",X245c,sep = ""),NA)) %>%
select(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,OS_OSOBA_ID,fo_symbol,fo_nazwa,funkcja,ZA_ADNOTACJE)
#7: opis współtwórców
opis_wspoltworcow <- BN_wspoltworca %>%
select(ZA_UWAGI,funkcja,OS_IMIE,OS_NAZWISKO) %>%
full_join(.,marc_field_245,by="ZA_UWAGI") %>%
filter(!is.na(OS_NAZWISKO)|(is.na(OS_NAZWISKO)&grepl("et al\\.",X245c))) %>%
mutate(jest_et_al = grepl("et al\\.",X245c),
OS_IMIE = ifelse(OS_IMIE=="*","",as.character(OS_IMIE)),
opis = ifelse(!is.na(OS_NAZWISKO),paste(funkcja,OS_IMIE, OS_NAZWISKO, sep = " "),""),
opis = str_replace_all(opis," +"," "),
opis = ifelse(opis==" ","",as.character(opis))) %>%
select(ZA_UWAGI,opis,jest_et_al) %>%
group_by(ZA_UWAGI) %>%
mutate(opis = paste(opis,collapse = ", "),
jest_et_al = paste(unique(jest_et_al),sep = "")) %>%
ungroup() %>%
unique() %>%
mutate(opis = ifelse(jest_et_al==TRUE&opis=="","et al.",
ifelse(jest_et_al,paste(opis,"et al.",sep = " "),opis))) %>%
select(ZA_UWAGI,opis)
#700
marc_field_700 <- data %>%
select(ZA_UWAGI,X700)%>%
filter(X700!="") %>%
mutate(X700=str_replace_all(X700,"(..\\$a)","|\\1"),
X700=str_replace_all(X700,"(^|\\|)","~\\1")) %>%
cSplit(.,"X700",sep = "~",direction = "long") %>%
filter(X700!="") %>%
mutate(X700=str_remove_all(X700,"^\\|")) %>%
mutate(indicator = str_replace_all(X700,"(^.*?)(\\$.*)","\\1")) %>%
filter(X700!="")
subfield_list<- str_extract_all(data$X700,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_700)[1]))
colnames(empty_table) <-subfield_list
marc_field_700<-cbind(marc_field_700,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_700$X700 <- str_replace(marc_field_700$X700,subfield_list_char[i],"|\\1")
}
Progress: 1 on 8 Progress: 2 on 8 Progress: 3 on 8 Progress: 4 on 8 Progress: 5 on 8 Progress: 6 on 8 Progress: 7 on 8 Progress: 8 on 8
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_700[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_700$X700),str_replace_all(gsub(string,"\\3",marc_field_700$X700),"\\${2}.", "~"),NA)
}
Progress: 1 on 8 Progress: 2 on 8 Progress: 3 on 8 Progress: 4 on 8 Progress: 5 on 8 Progress: 6 on 8 Progress: 7 on 8 Progress: 8 on 8
marc_field_700 <- marc_field_700 %>%
select(ZA_UWAGI,osoba = `$a`,funkcja = `$e`) %>%
filter(!is.na(funkcja)) %>%
mutate(osoba = str_remove(osoba,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)"),
OS_NAZWISKO = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\1"),as.character(osoba)),
OS_IMIE = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\3"),"*"),
funkcja_duza = str_to_lower(funkcja),
opis = paste(funkcja_duza,OS_IMIE,OS_NAZWISKO, sep = " "),
opis_duzy = paste(funkcja,OS_IMIE,OS_NAZWISKO, sep = " ")) %>%
select(ZA_UWAGI,opis,opis_duzy) %>%
group_by(ZA_UWAGI) %>%
mutate(opis = paste(opis,collapse = ". "),
opis_duzy = paste(opis_duzy,collapse = ". ")) %>%
ungroup() %>%
unique()
#opis współtwórców ze strefy odpowiedzialności 245
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,`$c`)
#porównanie opisu współtwórców z 245 i 700
wspoltworcy <- marc_field_700 %>%
full_join(.,marc_field_245,by="ZA_UWAGI") %>%
cSplit(.,"$c",sep = " ; ",direction = "long") %>%
#ograniczanie osób ze strefy odpowiedzialności
mutate(czy_mala = grepl(" [a-zęóąśłżźćń]|^[a-zęóąśłżźćń]|\\[[a-zęóąśłżźćń]",`$c`,ignore.case = FALSE)) %>%
filter(czy_mala==TRUE) %>%
select(-czy_mala) %>%
#mutate(`$c` = gsub("^(\\[){0,1}([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])","\\1\\U\\2",perl = TRUE,`$c`)) %>%
group_by(ZA_UWAGI) %>%
mutate(X245 = paste(`$c`, collapse = ", ")) %>%
select(-`$c`) %>%
unique() %>%
mutate(order_pbl = as.character(str_extract_all(opis,"(?<=^| |\\[|-)([A-ZAÁÀÂÃÄĂĀÅĄÆEÉÈÊËĚĒĖĘIÍÌÎÏĪĮIOÓÒÔÕÖŐØŒUÚÙÛÜŰŪůYÝCĆČçDĎĐĐGĢĞKĶLŁĻNŃÑŇŅŊRŘSŚŠŞSßTŤŦÞŢ8ZŻŹŽa-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])")),
order_pbl = str_replace_all(order_pbl,"(.*?\")(.)(\".*?.)", "\\2"),
order_bn = as.character(str_extract_all(X245,"(?<=^| |\\[|-)([A-ZAÁÀÂÃÄĂĀÅĄÆEÉÈÊËĚĒĖĘIÍÌÎÏĪĮIOÓÒÔÕÖŐØŒUÚÙÛÜŰŪůYÝCĆČçDĎĐĐGĢĞKĶLŁĻNŃÑŇŅŊRŘSŚŠŞSßTŤŦÞŢ8ZŻŹŽa-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])")),
order_bn = str_replace_all(order_bn,"(.*?\")(.)(\".*?.)", "\\2"),
X245 = str_remove(X245, "\\.$"),
X245 = str_remove(X245, "\\["),
X245 = str_remove(X245, "\\]"),
order_pbl = str_remove_all(order_pbl, "[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]"),
order_bn = str_remove_all(order_bn, "[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]"),
to_samo = order_pbl==order_bn,
X245 = gsub("(^[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(.*)","\\U\\1\\E\\2",perl = TRUE, X245)) %>%
left_join(.,za_jezyk_oryginalu,by="ZA_UWAGI") %>%
mutate(czy_pl = grepl("pol",ZA_JEZYK_ORYGINALU)|is.na(ZA_JEZYK_ORYGINALU),
decyzja = ifelse(to_samo==FALSE|czy_pl==FALSE,FALSE,TRUE))
za_opis_wspoltworcow <- wspoltworcy %>%
mutate(za_opis_wspoltworcow = ifelse(decyzja==TRUE,as.character(X245),paste(X245,opis_duzy,sep = "#"))) %>%
select(ZA_UWAGI,opis_duzy,za_opis_wspoltworcow) %>%
cSplit(.,"za_opis_wspoltworcow",sep = "#",direction = "wide") %>%
mutate(za_opis_wspoltworcow_2 = ifelse(is.na(za_opis_wspoltworcow_2),'',as.character(za_opis_wspoltworcow_2)),
to_samo = za_opis_wspoltworcow_1==za_opis_wspoltworcow_2) %>%
filter(to_samo==FALSE) %>%
group_by(ZA_UWAGI) %>%
mutate(za_opis_wspoltworcow = paste(za_opis_wspoltworcow_1,za_opis_wspoltworcow_2,sep = "#"),
za_opis_wspoltworcow = str_remove_all(za_opis_wspoltworcow,"\\#$")) %>%
select(ZA_UWAGI,za_opis_wspoltworcow)
opis_wspoltworcow <- opis_wspoltworcow %>%
filter(ZA_UWAGI %notin% za_opis_wspoltworcow$ZA_UWAGI) %>%
filter(!is.na(opis)) %>%
rename(za_opis_wspoltworcow = opis)
za_opis_wspoltworcow <- za_opis_wspoltworcow %>%
bind_rows(.,opis_wspoltworcow) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#8 wydanie
marc_field_250 <- data %>%
select(ZA_UWAGI,X250)%>%
filter(X250!="") %>%
mutate(X250=str_replace_all(X250,"(^|\\|)","~\\1")) %>%
cSplit(.,"X250",sep = "~",direction = "long") %>%
filter(X250!="") %>%
mutate(X250=str_remove_all(X250,"^\\|")) %>%
mutate(indicator = str_replace_all(X250,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X250,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_250)[1]))
colnames(empty_table) <-subfield_list
marc_field_250<-cbind(marc_field_250,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_250$X250 <- str_replace(marc_field_250$X250,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_250[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_250$X250),str_replace_all(gsub(string,"\\3",marc_field_250$X250),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
za_wydanie <- marc_field_250 %>%
select(ZA_UWAGI, wydanie = `$a`) %>%
mutate(wydanie = str_remove(wydanie," \\/$")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#9: instytucja sprawcza
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
za_instytucja <- marc_field_245 %>%
select(ZA_UWAGI,X245c=`$c`) %>%
filter(!is.na(X245c)) %>%
mutate(instytucja = ifelse(grepl("\\;",X245c),str_replace_all(X245c, "(.*?)(\\;(?!.*\\;))( )+(.*?$)","\\4"),"")) %>%
left_join(.,BN_wspoltworca,by="ZA_UWAGI")
x <- 1:lengths(za_instytucja[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
za_instytucja$czy_nazwisko[i] <- grepl(za_instytucja$OS_NAZWISKO[i],za_instytucja$X245c[i])
za_instytucja$czy_imie[i] <- grepl(za_instytucja$OS_IMIE[i],za_instytucja$X245c[i])
}
Progress: 1 on 794 Progress: 2 on 794 Progress: 3 on 794 Progress: 4 on 794 Progress: 5 on 794 Progress: 6 on 794 Progress: 7 on 794 Progress: 8 on 794 Progress: 9 on 794 Progress: 10 on 794 Progress: 11 on 794 Progress: 12 on 794 Progress: 13 on 794 Progress: 14 on 794 Progress: 15 on 794 Progress: 16 on 794 Progress: 17 on 794 Progress: 18 on 794 Progress: 19 on 794 Progress: 20 on 794 Progress: 21 on 794 Progress: 22 on 794 Progress: 23 on 794 Progress: 24 on 794 Progress: 25 on 794 Progress: 26 on 794 Progress: 27 on 794 Progress: 28 on 794 Progress: 29 on 794 Progress: 30 on 794 Progress: 31 on 794 Progress: 32 on 794 Progress: 33 on 794 Progress: 34 on 794 Progress: 35 on 794 Progress: 36 on 794 Progress: 37 on 794 Progress: 38 on 794 Progress: 39 on 794 Progress: 40 on 794 Progress: 41 on 794 Progress: 42 on 794 Progress: 43 on 794 Progress: 44 on 794 Progress: 45 on 794 Progress: 46 on 794 Progress: 47 on 794 Progress: 48 on 794 Progress: 49 on 794 Progress: 50 on 794 Progress: 51 on 794 Progress: 52 on 794 Progress: 53 on 794 Progress: 54 on 794 Progress: 55 on 794 Progress: 56 on 794 Progress: 57 on 794 Progress: 58 on 794 Progress: 59 on 794 Progress: 60 on 794 Progress: 61 on 794 Progress: 62 on 794 Progress: 63 on 794 Progress: 64 on 794 Progress: 65 on 794 Progress: 66 on 794 Progress: 67 on 794 Progress: 68 on 794 Progress: 69 on 794 Progress: 70 on 794 Progress: 71 on 794 Progress: 72 on 794 Progress: 73 on 794 Progress: 74 on 794 Progress: 75 on 794 Progress: 76 on 794 Progress: 77 on 794 Progress: 78 on 794 Progress: 79 on 794 Progress: 80 on 794 Progress: 81 on 794 Progress: 82 on 794 Progress: 83 on 794 Progress: 84 on 794 Progress: 85 on 794 Progress: 86 on 794 Progress: 87 on 794 Progress: 88 on 794 Progress: 89 on 794 Progress: 90 on 794 Progress: 91 on 794 Progress: 92 on 794 Progress: 93 on 794 Progress: 94 on 794 Progress: 95 on 794 Progress: 96 on 794 Progress: 97 on 794 Progress: 98 on 794 Progress: 99 on 794 Progress: 100 on 794 Progress: 101 on 794 Progress: 102 on 794 Progress: 103 on 794 Progress: 104 on 794 Progress: 105 on 794 Progress: 106 on 794 Progress: 107 on 794 Progress: 108 on 794 Progress: 109 on 794 Progress: 110 on 794 Progress: 111 on 794 Progress: 112 on 794 Progress: 113 on 794 Progress: 114 on 794 Progress: 115 on 794 Progress: 116 on 794 Progress: 117 on 794 Progress: 118 on 794 Progress: 119 on 794 Progress: 120 on 794 Progress: 121 on 794 Progress: 122 on 794 Progress: 123 on 794 Progress: 124 on 794 Progress: 125 on 794 Progress: 126 on 794 Progress: 127 on 794 Progress: 128 on 794 Progress: 129 on 794 Progress: 130 on 794 Progress: 131 on 794 Progress: 132 on 794 Progress: 133 on 794 Progress: 134 on 794 Progress: 135 on 794 Progress: 136 on 794 Progress: 137 on 794 Progress: 138 on 794 Progress: 139 on 794 Progress: 140 on 794 Progress: 141 on 794 Progress: 142 on 794 Progress: 143 on 794 Progress: 144 on 794 Progress: 145 on 794 Progress: 146 on 794 Progress: 147 on 794 Progress: 148 on 794 Progress: 149 on 794 Progress: 150 on 794 Progress: 151 on 794 Progress: 152 on 794 Progress: 153 on 794 Progress: 154 on 794 Progress: 155 on 794 Progress: 156 on 794 Progress: 157 on 794 Progress: 158 on 794 Progress: 159 on 794 Progress: 160 on 794 Progress: 161 on 794 Progress: 162 on 794 Progress: 163 on 794 Progress: 164 on 794 Progress: 165 on 794 Progress: 166 on 794 Progress: 167 on 794 Progress: 168 on 794 Progress: 169 on 794 Progress: 170 on 794 Progress: 171 on 794 Progress: 172 on 794 Progress: 173 on 794 Progress: 174 on 794 Progress: 175 on 794 Progress: 176 on 794 Progress: 177 on 794 Progress: 178 on 794 Progress: 179 on 794 Progress: 180 on 794 Progress: 181 on 794 Progress: 182 on 794 Progress: 183 on 794 Progress: 184 on 794 Progress: 185 on 794 Progress: 186 on 794 Progress: 187 on 794 Progress: 188 on 794 Progress: 189 on 794 Progress: 190 on 794 Progress: 191 on 794 Progress: 192 on 794 Progress: 193 on 794 Progress: 194 on 794 Progress: 195 on 794 Progress: 196 on 794 Progress: 197 on 794 Progress: 198 on 794 Progress: 199 on 794 Progress: 200 on 794 Progress: 201 on 794 Progress: 202 on 794 Progress: 203 on 794 Progress: 204 on 794 Progress: 205 on 794 Progress: 206 on 794 Progress: 207 on 794 Progress: 208 on 794 Progress: 209 on 794 Progress: 210 on 794 Progress: 211 on 794 Progress: 212 on 794 Progress: 213 on 794 Progress: 214 on 794 Progress: 215 on 794 Progress: 216 on 794 Progress: 217 on 794 Progress: 218 on 794 Progress: 219 on 794 Progress: 220 on 794 Progress: 221 on 794 Progress: 222 on 794 Progress: 223 on 794 Progress: 224 on 794 Progress: 225 on 794 Progress: 226 on 794 Progress: 227 on 794 Progress: 228 on 794 Progress: 229 on 794 Progress: 230 on 794 Progress: 231 on 794 Progress: 232 on 794 Progress: 233 on 794 Progress: 234 on 794 Progress: 235 on 794 Progress: 236 on 794 Progress: 237 on 794 Progress: 238 on 794 Progress: 239 on 794 Progress: 240 on 794 Progress: 241 on 794 Progress: 242 on 794 Progress: 243 on 794 Progress: 244 on 794 Progress: 245 on 794 Progress: 246 on 794 Progress: 247 on 794 Progress: 248 on 794 Progress: 249 on 794 Progress: 250 on 794 Progress: 251 on 794 Progress: 252 on 794 Progress: 253 on 794 Progress: 254 on 794 Progress: 255 on 794 Progress: 256 on 794 Progress: 257 on 794 Progress: 258 on 794 Progress: 259 on 794 Progress: 260 on 794 Progress: 261 on 794 Progress: 262 on 794 Progress: 263 on 794 Progress: 264 on 794 Progress: 265 on 794 Progress: 266 on 794 Progress: 267 on 794 Progress: 268 on 794 Progress: 269 on 794 Progress: 270 on 794 Progress: 271 on 794 Progress: 272 on 794 Progress: 273 on 794 Progress: 274 on 794 Progress: 275 on 794 Progress: 276 on 794 Progress: 277 on 794 Progress: 278 on 794 Progress: 279 on 794 Progress: 280 on 794 Progress: 281 on 794 Progress: 282 on 794 Progress: 283 on 794 Progress: 284 on 794 Progress: 285 on 794 Progress: 286 on 794 Progress: 287 on 794 Progress: 288 on 794 Progress: 289 on 794 Progress: 290 on 794 Progress: 291 on 794 Progress: 292 on 794 Progress: 293 on 794 Progress: 294 on 794 Progress: 295 on 794 Progress: 296 on 794 Progress: 297 on 794 Progress: 298 on 794 Progress: 299 on 794 Progress: 300 on 794 Progress: 301 on 794 Progress: 302 on 794 Progress: 303 on 794 Progress: 304 on 794 Progress: 305 on 794 Progress: 306 on 794 Progress: 307 on 794 Progress: 308 on 794 Progress: 309 on 794 Progress: 310 on 794 Progress: 311 on 794 Progress: 312 on 794 Progress: 313 on 794 Progress: 314 on 794 Progress: 315 on 794 Progress: 316 on 794 Progress: 317 on 794 Progress: 318 on 794 Progress: 319 on 794 Progress: 320 on 794 Progress: 321 on 794 Progress: 322 on 794 Progress: 323 on 794 Progress: 324 on 794 Progress: 325 on 794 Progress: 326 on 794 Progress: 327 on 794 Progress: 328 on 794 Progress: 329 on 794 Progress: 330 on 794 Progress: 331 on 794 Progress: 332 on 794 Progress: 333 on 794 Progress: 334 on 794 Progress: 335 on 794 Progress: 336 on 794 Progress: 337 on 794 Progress: 338 on 794 Progress: 339 on 794 Progress: 340 on 794 Progress: 341 on 794 Progress: 342 on 794 Progress: 343 on 794 Progress: 344 on 794 Progress: 345 on 794 Progress: 346 on 794 Progress: 347 on 794 Progress: 348 on 794 Progress: 349 on 794 Progress: 350 on 794 Progress: 351 on 794 Progress: 352 on 794 Progress: 353 on 794 Progress: 354 on 794 Progress: 355 on 794 Progress: 356 on 794 Progress: 357 on 794 Progress: 358 on 794 Progress: 359 on 794 Progress: 360 on 794 Progress: 361 on 794 Progress: 362 on 794 Progress: 363 on 794 Progress: 364 on 794 Progress: 365 on 794 Progress: 366 on 794 Progress: 367 on 794 Progress: 368 on 794 Progress: 369 on 794 Progress: 370 on 794 Progress: 371 on 794 Progress: 372 on 794 Progress: 373 on 794 Progress: 374 on 794 Progress: 375 on 794 Progress: 376 on 794 Progress: 377 on 794 Progress: 378 on 794 Progress: 379 on 794 Progress: 380 on 794 Progress: 381 on 794 Progress: 382 on 794 Progress: 383 on 794 Progress: 384 on 794 Progress: 385 on 794 Progress: 386 on 794 Progress: 387 on 794 Progress: 388 on 794 Progress: 389 on 794 Progress: 390 on 794 Progress: 391 on 794 Progress: 392 on 794 Progress: 393 on 794 Progress: 394 on 794 Progress: 395 on 794 Progress: 396 on 794 Progress: 397 on 794 Progress: 398 on 794 Progress: 399 on 794 Progress: 400 on 794 Progress: 401 on 794 Progress: 402 on 794 Progress: 403 on 794 Progress: 404 on 794 Progress: 405 on 794 Progress: 406 on 794 Progress: 407 on 794 Progress: 408 on 794 Progress: 409 on 794 Progress: 410 on 794 Progress: 411 on 794 Progress: 412 on 794 Progress: 413 on 794 Progress: 414 on 794 Progress: 415 on 794 Progress: 416 on 794 Progress: 417 on 794 Progress: 418 on 794 Progress: 419 on 794 Progress: 420 on 794 Progress: 421 on 794 Progress: 422 on 794 Progress: 423 on 794 Progress: 424 on 794 Progress: 425 on 794 Progress: 426 on 794 Progress: 427 on 794 Progress: 428 on 794 Progress: 429 on 794 Progress: 430 on 794 Progress: 431 on 794 Progress: 432 on 794 Progress: 433 on 794 Progress: 434 on 794 Progress: 435 on 794 Progress: 436 on 794 Progress: 437 on 794 Progress: 438 on 794 Progress: 439 on 794 Progress: 440 on 794 Progress: 441 on 794 Progress: 442 on 794 Progress: 443 on 794 Progress: 444 on 794 Progress: 445 on 794 Progress: 446 on 794 Progress: 447 on 794 Progress: 448 on 794 Progress: 449 on 794 Progress: 450 on 794 Progress: 451 on 794 Progress: 452 on 794 Progress: 453 on 794 Progress: 454 on 794 Progress: 455 on 794 Progress: 456 on 794 Progress: 457 on 794 Progress: 458 on 794 Progress: 459 on 794 Progress: 460 on 794 Progress: 461 on 794 Progress: 462 on 794 Progress: 463 on 794 Progress: 464 on 794 Progress: 465 on 794 Progress: 466 on 794 Progress: 467 on 794 Progress: 468 on 794 Progress: 469 on 794 Progress: 470 on 794 Progress: 471 on 794 Progress: 472 on 794 Progress: 473 on 794 Progress: 474 on 794 Progress: 475 on 794 Progress: 476 on 794 Progress: 477 on 794 Progress: 478 on 794 Progress: 479 on 794 Progress: 480 on 794 Progress: 481 on 794 Progress: 482 on 794 Progress: 483 on 794 Progress: 484 on 794 Progress: 485 on 794 Progress: 486 on 794 Progress: 487 on 794 Progress: 488 on 794 Progress: 489 on 794 Progress: 490 on 794 Progress: 491 on 794 Progress: 492 on 794 Progress: 493 on 794 Progress: 494 on 794 Progress: 495 on 794 Progress: 496 on 794 Progress: 497 on 794 Progress: 498 on 794 Progress: 499 on 794 Progress: 500 on 794 Progress: 501 on 794 Progress: 502 on 794 Progress: 503 on 794 Progress: 504 on 794 Progress: 505 on 794 Progress: 506 on 794 Progress: 507 on 794 Progress: 508 on 794 Progress: 509 on 794 Progress: 510 on 794 Progress: 511 on 794 Progress: 512 on 794 Progress: 513 on 794 Progress: 514 on 794 Progress: 515 on 794 Progress: 516 on 794 Progress: 517 on 794 Progress: 518 on 794 Progress: 519 on 794 Progress: 520 on 794 Progress: 521 on 794 Progress: 522 on 794 Progress: 523 on 794 Progress: 524 on 794 Progress: 525 on 794 Progress: 526 on 794 Progress: 527 on 794 Progress: 528 on 794 Progress: 529 on 794 Progress: 530 on 794 Progress: 531 on 794 Progress: 532 on 794 Progress: 533 on 794 Progress: 534 on 794 Progress: 535 on 794 Progress: 536 on 794 Progress: 537 on 794 Progress: 538 on 794 Progress: 539 on 794 Progress: 540 on 794 Progress: 541 on 794 Progress: 542 on 794 Progress: 543 on 794 Progress: 544 on 794 Progress: 545 on 794 Progress: 546 on 794 Progress: 547 on 794 Progress: 548 on 794 Progress: 549 on 794 Progress: 550 on 794 Progress: 551 on 794 Progress: 552 on 794 Progress: 553 on 794 Progress: 554 on 794 Progress: 555 on 794 Progress: 556 on 794 Progress: 557 on 794 Progress: 558 on 794 Progress: 559 on 794 Progress: 560 on 794 Progress: 561 on 794 Progress: 562 on 794 Progress: 563 on 794 Progress: 564 on 794 Progress: 565 on 794 Progress: 566 on 794 Progress: 567 on 794 Progress: 568 on 794 Progress: 569 on 794 Progress: 570 on 794 Progress: 571 on 794 Progress: 572 on 794 Progress: 573 on 794 Progress: 574 on 794 Progress: 575 on 794 Progress: 576 on 794 Progress: 577 on 794 Progress: 578 on 794 Progress: 579 on 794 Progress: 580 on 794 Progress: 581 on 794 Progress: 582 on 794 Progress: 583 on 794 Progress: 584 on 794 Progress: 585 on 794 Progress: 586 on 794 Progress: 587 on 794 Progress: 588 on 794 Progress: 589 on 794 Progress: 590 on 794 Progress: 591 on 794 Progress: 592 on 794 Progress: 593 on 794 Progress: 594 on 794 Progress: 595 on 794 Progress: 596 on 794 Progress: 597 on 794 Progress: 598 on 794 Progress: 599 on 794 Progress: 600 on 794 Progress: 601 on 794 Progress: 602 on 794 Progress: 603 on 794 Progress: 604 on 794 Progress: 605 on 794 Progress: 606 on 794 Progress: 607 on 794 Progress: 608 on 794 Progress: 609 on 794 Progress: 610 on 794 Progress: 611 on 794 Progress: 612 on 794 Progress: 613 on 794 Progress: 614 on 794 Progress: 615 on 794 Progress: 616 on 794 Progress: 617 on 794 Progress: 618 on 794 Progress: 619 on 794 Progress: 620 on 794 Progress: 621 on 794 Progress: 622 on 794 Progress: 623 on 794 Progress: 624 on 794 Progress: 625 on 794 Progress: 626 on 794 Progress: 627 on 794 Progress: 628 on 794 Progress: 629 on 794 Progress: 630 on 794 Progress: 631 on 794 Progress: 632 on 794 Progress: 633 on 794 Progress: 634 on 794 Progress: 635 on 794 Progress: 636 on 794 Progress: 637 on 794 Progress: 638 on 794 Progress: 639 on 794 Progress: 640 on 794 Progress: 641 on 794 Progress: 642 on 794 Progress: 643 on 794 Progress: 644 on 794 Progress: 645 on 794 Progress: 646 on 794 Progress: 647 on 794 Progress: 648 on 794 Progress: 649 on 794 Progress: 650 on 794 Progress: 651 on 794 Progress: 652 on 794 Progress: 653 on 794 Progress: 654 on 794 Progress: 655 on 794 Progress: 656 on 794 Progress: 657 on 794 Progress: 658 on 794 Progress: 659 on 794 Progress: 660 on 794 Progress: 661 on 794 Progress: 662 on 794 Progress: 663 on 794 Progress: 664 on 794 Progress: 665 on 794 Progress: 666 on 794 Progress: 667 on 794 Progress: 668 on 794 Progress: 669 on 794 Progress: 670 on 794 Progress: 671 on 794 Progress: 672 on 794 Progress: 673 on 794 Progress: 674 on 794 Progress: 675 on 794 Progress: 676 on 794 Progress: 677 on 794 Progress: 678 on 794 Progress: 679 on 794 Progress: 680 on 794 Progress: 681 on 794 Progress: 682 on 794 Progress: 683 on 794 Progress: 684 on 794 Progress: 685 on 794 Progress: 686 on 794 Progress: 687 on 794 Progress: 688 on 794 Progress: 689 on 794 Progress: 690 on 794 Progress: 691 on 794 Progress: 692 on 794 Progress: 693 on 794 Progress: 694 on 794 Progress: 695 on 794 Progress: 696 on 794 Progress: 697 on 794 Progress: 698 on 794 Progress: 699 on 794 Progress: 700 on 794 Progress: 701 on 794 Progress: 702 on 794 Progress: 703 on 794 Progress: 704 on 794 Progress: 705 on 794 Progress: 706 on 794 Progress: 707 on 794 Progress: 708 on 794 Progress: 709 on 794 Progress: 710 on 794 Progress: 711 on 794 Progress: 712 on 794 Progress: 713 on 794 Progress: 714 on 794 Progress: 715 on 794 Progress: 716 on 794 Progress: 717 on 794 Progress: 718 on 794 Progress: 719 on 794 Progress: 720 on 794 Progress: 721 on 794 Progress: 722 on 794 Progress: 723 on 794 Progress: 724 on 794 Progress: 725 on 794 Progress: 726 on 794 Progress: 727 on 794 Progress: 728 on 794 Progress: 729 on 794 Progress: 730 on 794 Progress: 731 on 794 Progress: 732 on 794 Progress: 733 on 794 Progress: 734 on 794 Progress: 735 on 794 Progress: 736 on 794 Progress: 737 on 794 Progress: 738 on 794 Progress: 739 on 794 Progress: 740 on 794 Progress: 741 on 794 Progress: 742 on 794 Progress: 743 on 794 Progress: 744 on 794 Progress: 745 on 794 Progress: 746 on 794 Progress: 747 on 794 Progress: 748 on 794 Progress: 749 on 794 Progress: 750 on 794 Progress: 751 on 794 Progress: 752 on 794 Progress: 753 on 794 Progress: 754 on 794 Progress: 755 on 794 Progress: 756 on 794 Progress: 757 on 794 Progress: 758 on 794 Progress: 759 on 794 Progress: 760 on 794 Progress: 761 on 794 Progress: 762 on 794 Progress: 763 on 794 Progress: 764 on 794 Progress: 765 on 794 Progress: 766 on 794 Progress: 767 on 794 Progress: 768 on 794 Progress: 769 on 794 Progress: 770 on 794 Progress: 771 on 794 Progress: 772 on 794 Progress: 773 on 794 Progress: 774 on 794 Progress: 775 on 794 Progress: 776 on 794 Progress: 777 on 794 Progress: 778 on 794 Progress: 779 on 794 Progress: 780 on 794 Progress: 781 on 794 Progress: 782 on 794 Progress: 783 on 794 Progress: 784 on 794 Progress: 785 on 794 Progress: 786 on 794 Progress: 787 on 794 Progress: 788 on 794 Progress: 789 on 794 Progress: 790 on 794 Progress: 791 on 794 Progress: 792 on 794 Progress: 793 on 794 Progress: 794 on 794
za_instytucja <- za_instytucja %>%
filter(is.na(czy_nazwisko)&is.na(czy_imie)) %>%
filter(instytucja!="") %>%
filter(!grepl("^\\[[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]|^[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]",instytucja)) %>%
mutate(instytucja = str_remove(instytucja,"\\.$")) %>%
select(ZA_UWAGI,instytucja) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#10: wydawnictwo
BN_wydawnictwo <- data %>%
select(ZA_UWAGI, X260) %>%
mutate(X260 = str_replace_all(X260,"s\\.n\\.", "b.w."),
X260 = str_replace_all(X260,"s\\.l\\.", "b.m."),
X260 = str_replace_all(X260,"S\\.l\\.", "b.m."),
X260 = str_remove(X260,"^\\\\+"),
rok_wydania = str_extract_all(X260, "(?<=\\$c).*(?=\\$e)|(?<=\\$c).*"),
bez_roku = str_replace_all(X260, ".\\$c.*", ""),
ile_wydawnictw = str_count(bez_roku, "\\$b"),
ile_miejsc = str_count(bez_roku, "\\$a"),
kolejnosc = str_replace_all(as.character(str_extract_all(bez_roku, "\\$.")), "[^a-z]", ""),
bez_roku = str_replace_all(bez_roku, ";\\$b", ":$b"),
wydaw_podziel = ifelse(ile_wydawnictw>ile_miejsc|kolejnosc=="caabb", str_replace_all(bez_roku, "(\\$a)(.*?)( :\\$b.*?)( :\\$b)", "\\1\\2\\3 ;$a\\2\\4"),bez_roku),
wydawnictwo_test = str_replace_all(wydaw_podziel, "(\\$b)(.*?)( ;\\$a)", "\\1\\2|\\3")) %>%
select(ZA_UWAGI,rok_wydania,wydawnictwo_test) %>%
cSplit(., "wydawnictwo_test", sep = "|", direction = "long") %>%
mutate(wydawnictwo = str_extract_all(wydawnictwo_test, "(?<=\\$b)(.*)"),
miejsce_wydania = str_replace_all(str_extract_all(wydawnictwo_test, "(?<=\\$a)(.*)(?= {0,1}: {0,1}\\$b)|(?<=\\$a)(.*)($)")," ;\\$a", ", "),
nazwa_prosta = str_to_lower(str_replace_all(str_replace_all(unlist(wydawnictwo_test), "\\$\\w", ""), "\\W", ""))) %>%
left_join(.,PBL_wydawnictwa,by="nazwa_prosta") %>%
mutate(to_samo = wydawnictwo==WY_NAZWA) %>%
arrange(ZA_UWAGI,-to_samo,-WY_LICZBA_ZAPISOW)
BN_wydawnictwo$id_grupy <- cumsum(!duplicated(BN_wydawnictwo[1:3]))
BN_wydawnictwo <- BN_wydawnictwo[!duplicated(BN_wydawnictwo$id_grupy),] %>%
mutate(WY_NAZWA = ifelse(!is.na(WY_NAZWA),as.character(WY_NAZWA),as.character(wydawnictwo)),
WY_MIASTO = ifelse(!is.na(WY_MIASTO),as.character(WY_MIASTO),trim(as.character(miejsce_wydania))),
rok_wydania = str_replace_all(rok_wydania, "(.*)(\\.)", "\\1"),
za_rok_wydania = ifelse(nchar(rok_wydania)==4,as.character(rok_wydania),NA),
do_opisu = ifelse(is.na(za_rok_wydania),paste("[",str_extract(rok_wydania,"\\d{4}"),"]",sep = ""),""),
WY_MIASTO = ifelse(substr(WY_MIASTO,1,1)=="["&substr(WY_MIASTO,nchar(WY_MIASTO),nchar(WY_MIASTO))!="]"&is.na(WY_WYDAWNICTWO_ID),paste(trim(WY_MIASTO),"]",sep = ""),as.character(WY_MIASTO))) %>%
select(ZA_UWAGI,WY_WYDAWNICTWO_ID,WY_NAZWA,WY_MIASTO,za_rok_wydania,do_opisu) %>%
mutate(WY_NAZWA = ifelse(str_count(WY_NAZWA, "\\[")>str_count(WY_NAZWA, "\\]"), paste(WY_NAZWA, "]", sep = ""),
ifelse(str_count(WY_NAZWA, "\\[")<str_count(WY_NAZWA, "\\]"), paste("[", WY_NAZWA, sep = ""), as.character(WY_NAZWA))),
WY_MIASTO = ifelse(str_count(WY_MIASTO, "\\[")>str_count(WY_MIASTO, "\\]"), paste(WY_MIASTO, "]", sep = ""),
ifelse(str_count(WY_MIASTO, "\\[")<str_count(WY_MIASTO, "\\]"), paste("[", WY_MIASTO, sep = ""), as.character(WY_MIASTO))))
#11: opis fizyczny książki
#pole 300 do opisu fizycznego
marc_field_300 <- data %>%
select(ZA_UWAGI,X300)%>%
filter(X300!="") %>%
mutate(X300=str_replace_all(X300,"(^|\\|)","~\\1")) %>%
cSplit(.,"X300",sep = "~",direction = "long") %>%
filter(X300!="") %>%
mutate(X300=str_remove_all(X300,"^\\|")) %>%
mutate(indicator = str_replace_all(X300,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X300,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_300)[1]))
colnames(empty_table) <-subfield_list
marc_field_300<-cbind(marc_field_300,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_300$X300 <- str_replace(marc_field_300$X300,subfield_list_char[i],"|\\1")
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_300[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_300$X300),str_replace_all(gsub(string,"\\3",marc_field_300$X300),"\\${2}.", "~"),NA)
}
Progress: 1 on 4 Progress: 2 on 4 Progress: 3 on 4 Progress: 4 on 4
marc_field_300 <- marc_field_300 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$b` = str_remove(`$b`," \\;+$| \\:+$"),
`$e` = ifelse(grepl("CD-ROM|DVD|VCD|CD",`$e`)&grepl("\\+ dysk|płyt",`$e`),str_extract(`$e`,"(?<=\\+)(dysk|płyt.*?)(CD-ROM|DVD|VCD|CD)(\\)){0,1}"),
ifelse(grepl("CD-ROM|DVD|VCD|CD",`$e`),str_extract(`$e`,"(^.*?)(CD-ROM|DVD|VCD|CD)(\\)){0,1}"),NA)),
`$a` = ifelse(is.na(`$a`),"",as.character(`$a`)),
`$b` = ifelse(is.na(`$b`),"",as.character(`$b`)),
`$e` = ifelse(is.na(`$e`),"",as.character(`$e`)))
#pole 500 do opisu fizycznego
marc_field_500 <- data %>%
select(ZA_UWAGI,X500)%>%
filter(X500!="") %>%
mutate(X500=str_replace_all(X500,"(^|\\|)","~\\1")) %>%
cSplit(.,"X500",sep = "~",direction = "long") %>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"^\\|")) %>%
mutate(indicator = str_replace_all(X500,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X500,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_500)[1]))
colnames(empty_table) <-subfield_list
marc_field_500<-cbind(marc_field_500,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_500$X500 <- str_replace(marc_field_500$X500,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_500[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_500$X500),str_replace_all(gsub(string,"\\3",marc_field_500$X500),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_500 <- marc_field_500 %>%
mutate(`$a` = ifelse(grepl("oryg(\\.|\\,)",X500)&grepl("pseud|nazwa",X500,ignore.case = TRUE),str_replace(`$a`,"(^.*?)(\\. )(\\p{Lu}.*$)","\\3"),as.character(`$a`))) %>%
filter(!grepl("oryg(\\.|\\,)",`$a`)&grepl("pseud|nazwa|dotycz|pol",`$a`,ignore.case = TRUE)) %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"))
#pole 546 do opisu fizycznego
marc_field_546 <- data %>%
select(ZA_UWAGI,X546)%>%
filter(X546!="") %>%
mutate(X546=str_replace_all(X546,"(^|\\|)","~\\1")) %>%
cSplit(.,"X546",sep = "~",direction = "long") %>%
filter(X546!="") %>%
mutate(X546=str_remove_all(X546,"^\\|")) %>%
mutate(indicator = str_replace_all(X546,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X546,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_546)[1]))
colnames(empty_table) <-subfield_list
marc_field_546<-cbind(marc_field_546,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_546$X546 <- str_replace(marc_field_546$X546,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_546[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_546$X546),str_replace_all(gsub(string,"\\3",marc_field_546$X546),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_546 <- marc_field_546 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"))
#pole 501 do opisu fizycznego
marc_field_501 <- data %>%
select(ZA_UWAGI,X501)%>%
filter(X501!="") %>%
mutate(X501=str_replace_all(X501,"(^|\\|)","~\\1")) %>%
cSplit(.,"X501",sep = "~",direction = "long") %>%
filter(X501!="") %>%
mutate(X501=str_remove_all(X501,"^\\|")) %>%
mutate(indicator = str_replace_all(X501,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X501,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_501)[1]))
colnames(empty_table) <-subfield_list
marc_field_501<-cbind(marc_field_501,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_501$X501 <- str_replace(marc_field_501$X501,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_501[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_501$X501),str_replace_all(gsub(string,"\\3",marc_field_501$X501),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_501 <- marc_field_501 %>%
select(ZA_UWAGI, `$a`)
za_opis_ks <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,do_opisu),by="ZA_UWAGI") %>%
left_join(.,marc_field_300 %>% select(ZA_UWAGI,X300a=`$a`,X300b=`$b`,X300e=`$e`),by="ZA_UWAGI") %>%
left_join(.,marc_field_500 %>% select(ZA_UWAGI,X500a=`$a`),by="ZA_UWAGI") %>%
left_join(.,marc_field_546 %>% select(ZA_UWAGI,X546a=`$a`),by="ZA_UWAGI") %>%
left_join(.,marc_field_501 %>% select(ZA_UWAGI,X501a=`$a`),by="ZA_UWAGI")
za_opis_ks[is.na(za_opis_ks)] <- ""
za_opis_ks <- za_opis_ks %>%
mutate(za_opis_ks = paste(ifelse(do_opisu!="",paste(as.character(do_opisu),", ",sep = ""),""),ifelse(X300a!="",paste(as.character(X300a),", ",sep = ""),""),ifelse(X300b!="",paste(as.character(X300b),", ",sep = ""),""),ifelse(X300e!="",paste(as.character(X300e),", ",sep = ""),""),ifelse(X500a!="",paste(as.character(X500a),", ",sep = ""),""),ifelse(X546a!="",as.character(X546a),""),ifelse(X501a!="",as.character(X501a),""),sep = ""),
za_opis_ks = str_remove(za_opis_ks,"(, )+$")) %>%
select(ZA_UWAGI,za_opis_ks) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(za_opis_ks))
za_opis_ks$id_grupy <- cumsum(!duplicated(za_opis_ks[1]))
za_opis_ks <- za_opis_ks[!duplicated(za_opis_ks$id_grupy),] %>%
select(-id_grupy)
#12: seria wydawnicza
marc_field_490 <- data %>%
select(ZA_UWAGI,X490,X800,X830) %>%
mutate(X490 = ifelse(grepl("U\\+",X490),as.character(X830),as.character(X490))) %>%
mutate(X800 = ifelse(X490!="","",as.character(X800)),
X830 = ifelse(X490!="","",as.character(X830)),
X800 = str_replace(X800,"(\\$a)(.*)(\\$t)","\\1"),
X490 = ifelse(X490==""&X830!="",as.character(X830),
ifelse(X490==""&X800!="",as.character(X800),as.character(X490)))) %>%
select(ZA_UWAGI,X490) %>%
filter(X490!="") %>%
mutate(X490=str_replace_all(X490,"(^|\\|)","~\\1")) %>%
cSplit(.,"X490",sep = "~",direction = "long") %>%
filter(X490!="") %>%
mutate(X490=str_remove_all(X490,"^\\|")) %>%
mutate(indicator = str_replace_all(X490,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X490,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_490)[1]))
colnames(empty_table) <-subfield_list
marc_field_490<-cbind(marc_field_490,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_490$X490 <- str_replace(marc_field_490$X490,subfield_list_char[i],"|\\1")
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_490[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_490$X490),str_replace_all(gsub(string,"\\3",marc_field_490$X490),"\\${2}.", "~"),NA)
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
za_seria_wydawnicza <- marc_field_490 %>%
mutate(`$a` = str_replace_all(`$a`,"(=)(\\$a)","\\1 "),
`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$v` = ifelse(is.na(`$v`),"",as.character(`$v`))) %>%
filter(!is.na(`$a`)) %>%
mutate(seria = str_remove(paste("(",`$a`,"; ",`$v`,")",sep = ""),"; (?=\\)$)"),
seria = gsub("( : )(.)",". \\U\\2",perl=TRUE,seria)) %>%
select(ZA_UWAGI,seria) %>%
group_by(ZA_UWAGI) %>%
mutate(seria = paste(seria,collapse = " ")) %>%
ungroup() %>%
unique() %>%
mutate(seria = str_replace_all(seria,"\\$.","; ")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#13: tomy
za_tomy <- data %>%
select(ZA_UWAGI) %>%
mutate(za_tomy = NA)
#14: adnotacje
za_adnotacje <- data %>%
select(ZA_UWAGI) %>%
left_join(.,ZA_ADNOTACJE %>% select(ZA_UWAGI,ZA_ADNOTACJE),by="ZA_UWAGI") %>%
left_join(.,BN_wspoltworca %>% select(ZA_UWAGI,ZA_ADNOTACJE),by="ZA_UWAGI") %>%
mutate(ZA_ADNOTACJE = paste(ifelse(is.na(ZA_ADNOTACJE.x),"",paste(as.character(ZA_ADNOTACJE.x),"# ",sep = "")),ifelse(is.na(ZA_ADNOTACJE.y),"",as.character(ZA_ADNOTACJE.y)),sep = ""),
ZA_ADNOTACJE = str_remove(ZA_ADNOTACJE,"(# )+$")) %>%
select(ZA_UWAGI,ZA_ADNOTACJE) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(ZA_ADNOTACJE))
za_adnotacje$id_grupy <- cumsum(!duplicated(za_adnotacje[1]))
za_adnotacje <- za_adnotacje[!duplicated(za_adnotacje$id_grupy),] %>%
select(-id_grupy)
#15: BN_URL
BN_URL <- data %>%
select(ZA_UWAGI,BN_URL)
#wyrównanie liczby wierszy do liczby wierszy obiektu data
BN_wspoltworca <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wspoltworca %>% select(ZA_UWAGI,OS_OSOBA_ID,OS_NAZWISKO,OS_IMIE,fo_symbol),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, OS_OSOBA_ID = paste(OS_OSOBA_ID, collapse="|"), OS_NAZWISKO = paste(OS_NAZWISKO, collapse="|"), OS_IMIE = paste(OS_IMIE, collapse="|"), fo_symbol = paste(fo_symbol, collapse="|")) %>%
mutate(fo_symbol = ifelse(fo_symbol=="NULL","NA",as.character(fo_symbol)))
BN_wydawnictwo <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,WY_WYDAWNICTWO_ID,WY_NAZWA,WY_MIASTO,za_rok_wydania),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, WY_WYDAWNICTWO_ID = paste(WY_WYDAWNICTWO_ID, collapse="|"), WY_NAZWA = paste(WY_NAZWA, collapse="|"), WY_MIASTO = paste(WY_MIASTO, collapse="|"), za_rok_wydania = paste(unique(za_rok_wydania), collapse="|")) %>%
mutate(za_rok_wydania = ifelse(za_rok_wydania=="NA","",as.integer(za_rok_wydania)))
pojawi戼㸳y si攼㹡 warto㤼㹣ci NA na skutek przekszta戼㸳cenia
#połączenie wszystkich elementów w jedną tabelę
kolejnosc <- data.frame(kolejnosc=c("ZA_UWAGI","RZ_NAZWA","ZA_RO_ROK","ZA_TYPE","RZ_RODZAJ_ID","DZ_NAZWA","DZ_DZIAL_ID","TW_TWORCA_ID","AM_AUTOR_ID","AM_NAZWISKO","AM_IMIE","ZA_TYTUL","ZA_TYTUL_ORYGINALU","ZA_JEZYK_ORYGINALU","OS_OSOBA_ID","OS_NAZWISKO","OS_IMIE","fo_symbol","za_opis_wspoltworcow","wydanie","za_tomy","instytucja","WY_WYDAWNICTWO_ID","WY_MIASTO","WY_NAZWA","za_rok_wydania","za_opis_ks","seria","TW_NAZWISKO","TW_IMIE","redaktor_dzialu","ZA_ADNOTACJE","BN_URL"))
polaczone <- data %>%
select(ZA_UWAGI) %>%
left_join(.,pola_pbl,by = "ZA_UWAGI") %>%
left_join(.,BN_autor,by = "ZA_UWAGI") %>%
left_join(.,za_tytul,by = "ZA_UWAGI") %>%
left_join(.,za_tytul_oryginalu,by = "ZA_UWAGI") %>%
left_join(.,za_jezyk_oryginalu,by = "ZA_UWAGI") %>%
left_join(.,BN_wspoltworca,by = "ZA_UWAGI") %>%
left_join(.,za_opis_wspoltworcow,by = "ZA_UWAGI") %>%
left_join(.,za_wydanie,by = "ZA_UWAGI") %>%
left_join(.,za_instytucja,by = "ZA_UWAGI") %>%
left_join(.,BN_wydawnictwo,by = "ZA_UWAGI") %>%
left_join(.,za_opis_ks,by = "ZA_UWAGI") %>%
left_join(.,za_seria_wydawnicza,by = "ZA_UWAGI") %>%
left_join(.,za_tomy,by = "ZA_UWAGI") %>%
left_join(.,za_adnotacje,by = "ZA_UWAGI") %>%
left_join(.,BN_URL,by = "ZA_UWAGI") %>%
select(as.vector(kolejnosc$kolejnosc))
colnames(polaczone) <- c("rekord_BN","rz_nazwa","za_ro_rok","za_type","rz_rodzaj_id","DZ_NAZWA","DZ_DZIAL_ID","tw_tworca_id","am_autor_id","am_nazwisko","am_imie","za_tytul","za_tytul_oryginalu","za_jezyk_oryginalu","os_osoba_id","os_nazwisko","os_imie","fo_symbol","za_opis_wspoltworcow","za_wydanie","za_tomy","za_instytucja","wy_wydawnictwo_id","wy_miejsce","wy_nazwa","za_rok_wydania","za_opis_fizyczny_ksiazki","za_seria_wydawnicza","tw_nazwisko","tw_imie","pracownik","za_adnotacje","BN_URL")
#zasygnalizowanie niepoprawnego kodowania
x <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("<U\\+(....)>",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)!=0,paste(polaczone$za_adnotacje,paste("UWAGA! Błąd kodowania w polu ",as.character(names(polaczone[i]))," Znajdź frazę \"???\" i zredaguj pole",sep = ""),sep = "# "),paste("UWAGA! Błąd kodowania w polu ",as.character(names(polaczone[i]))," Znajdź frazę \"???\" i zredaguj pole",sep = "")),as.character(polaczone$za_adnotacje))
polaczone[,i] <- gsub("<U\\+(....)>", "???", polaczone[,i])
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności znaku $ w którymś z pól
X <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("\\$",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)==0,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano znak \"$\". Zredaguj treść pola.",sep = ""),paste(polaczone$za_adnotacje,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano znak \"$\". Zredaguj treść pola.",sep = ""),sep = "# ")),as.character(polaczone$za_adnotacje))
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności frazy "character(0)" w którymś z pól
X <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("character\\(0\\)",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)==0,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano frazę \"character(0)\". Zredaguj treść pola.",sep = ""),paste(polaczone$za_adnotacje,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano frazę \"character(0)\". Zredaguj treść pola.",sep = ""),sep = "# ")),as.character(polaczone$za_adnotacje))
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności znaku # w opisie współtwórców
polaczone$za_adnotacje <- ifelse(grepl("\\#",polaczone$za_opis_wspoltworcow),
ifelse(nchar(polaczone$za_adnotacje)==0,"UWAGA! Ze względu na konflikt w opisie współtwórców wybierz właściwą wartość (strefa odpowiedzialności \"#\" współtwórcy z pola 700)",paste(polaczone$za_adnotacje,"UWAGA! Ze względu na konflikt w opisie współtwórców wybierz właściwą wartość (strefa odpowiedzialności # współtwórcy z pola 700)",sep = "# ")),as.character(polaczone$za_adnotacje))
out <- cSplit(polaczone, c("am_autor_id", "am_nazwisko", "am_imie","os_osoba_id","os_nazwisko", "os_imie", "fo_symbol","wy_wydawnictwo_id","wy_miejsce","wy_nazwa"),sep = "|",direction = "long") %>%
unique()
out$rekord_BN <- ifelse(is.na(out$rekord_BN),'',as.character(out$rekord_BN))
out$rz_nazwa <- ifelse(is.na(out$rz_nazwa),'',as.character(out$rz_nazwa))
out$za_ro_rok <- ifelse(is.na(out$za_ro_rok),'',as.character(out$za_ro_rok))
out$za_type <- ifelse(is.na(out$za_type),'',as.character(out$za_type))
out$rz_rodzaj_id <- ifelse(is.na(out$rz_rodzaj_id),'',as.character(out$rz_rodzaj_id))
out$DZ_NAZWA <- ifelse(is.na(out$DZ_NAZWA),'',as.character(out$DZ_NAZWA))
out$DZ_DZIAL_ID <- ifelse(is.na(out$DZ_DZIAL_ID),'',as.character(out$DZ_DZIAL_ID))
out$tw_tworca_id <- ifelse(is.na(out$tw_tworca_id),'',as.character(out$tw_tworca_id))
out$am_autor_id <- ifelse(is.na(out$am_autor_id),'',as.character(out$am_autor_id))
out$am_nazwisko <- ifelse(is.na(out$am_nazwisko),'',as.character(out$am_nazwisko))
out$am_imie <- ifelse(is.na(out$am_imie),'',as.character(out$am_imie))
out$za_tytul <- ifelse(is.na(out$za_tytul),'',as.character(out$za_tytul))
out$za_tytul_oryginalu <- ifelse(is.na(out$za_tytul_oryginalu),'',as.character(out$za_tytul_oryginalu))
out$za_jezyk_oryginalu <- ifelse(is.na(out$za_jezyk_oryginalu),'',as.character(out$za_jezyk_oryginalu))
out$os_osoba_id <- ifelse(is.na(out$os_osoba_id),'',as.character(out$os_osoba_id))
out$os_nazwisko <- ifelse(is.na(out$os_nazwisko),'',as.character(out$os_nazwisko))
out$os_imie <- ifelse(is.na(out$os_imie),'',as.character(out$os_imie))
out$fo_symbol <- ifelse(is.na(out$fo_symbol),'',as.character(out$fo_symbol))
out$za_opis_wspoltworcow <- ifelse(is.na(out$za_opis_wspoltworcow),'',as.character(out$za_opis_wspoltworcow))
out$za_wydanie <- ifelse(is.na(out$za_wydanie),'',as.character(out$za_wydanie))
out$za_tomy <- ifelse(is.na(out$za_tomy),'',as.character(out$za_tomy))
out$za_instytucja <- ifelse(is.na(out$za_instytucja),'',as.character(out$za_instytucja))
out$wy_wydawnictwo_id <- ifelse(is.na(out$wy_wydawnictwo_id),'',as.character(out$wy_wydawnictwo_id))
out$wy_miejsce <- ifelse(is.na(out$wy_miejsce),'',as.character(out$wy_miejsce))
out$wy_nazwa <- ifelse(is.na(out$wy_nazwa),'',as.character(out$wy_nazwa))
out$za_rok_wydania <- ifelse(is.na(out$za_rok_wydania),'',as.character(out$za_rok_wydania))
out$za_opis_fizyczny_ksiazki <- ifelse(is.na(out$za_opis_fizyczny_ksiazki),'',as.character(out$za_opis_fizyczny_ksiazki))
out$za_seria_wydawnicza <- ifelse(is.na(out$za_seria_wydawnicza),'',as.character(out$za_seria_wydawnicza))
out$tw_nazwisko <- ifelse(is.na(out$tw_nazwisko),'',as.character(out$tw_nazwisko))
out$tw_imie <- ifelse(is.na(out$tw_imie),'',as.character(out$tw_imie))
out$pracownik <- ifelse(is.na(out$pracownik),'',as.character(out$pracownik))
out$za_adnotacje <- ifelse(is.na(out$za_adnotacje),'',as.character(out$za_adnotacje))
out$BN_URL <- ifelse(is.na(out$BN_URL),'',as.character(out$BN_URL))
out %$%
{ rekord_BN==lag(rekord_BN,) & rz_nazwa==lag(rz_nazwa,) & za_ro_rok==lag(za_ro_rok,) & za_type==lag(za_type,) & rz_rodzaj_id==lag(rz_rodzaj_id,) & DZ_NAZWA==lag(DZ_NAZWA,) & DZ_DZIAL_ID==lag(DZ_DZIAL_ID,) & tw_tworca_id==lag(tw_tworca_id,) & za_tytul==lag(za_tytul,) & za_tytul_oryginalu==lag(za_tytul_oryginalu,) & za_jezyk_oryginalu==lag(za_jezyk_oryginalu,) & za_opis_wspoltworcow==lag(za_opis_wspoltworcow,) & za_wydanie==lag(za_wydanie,) & za_tomy==lag(za_tomy,) & za_instytucja==lag(za_instytucja,) & za_rok_wydania==lag(za_rok_wydania,) & za_opis_fizyczny_ksiazki==lag(za_opis_fizyczny_ksiazki,) & za_seria_wydawnicza==lag(za_seria_wydawnicza,) & tw_nazwisko==lag(tw_nazwisko,) & tw_imie==lag(tw_imie,) & pracownik==lag(pracownik,) & za_adnotacje==lag(za_adnotacje,) & BN_URL==lag(BN_URL,)} %>%
as.numeric() %>%
{.} -> out$same
out$same[1] <- 0
out$dzielone <- paste(out$am_autor_id,out$am_nazwisko,out$am_imie,out$os_osoba_id,out$os_nazwisko,out$os_imie,out$fo_symbol,out$wy_wydawnictwo_id,out$wy_miejsce,out$wy_nazwa,sep = "")
out <- out %>%
filter(!(same==1&dzielone=="")) %>%
select(1:33)
out %$%
{ rekord_BN==lag(rekord_BN,) & rz_nazwa==lag(rz_nazwa,) & za_ro_rok==lag(za_ro_rok,) & za_type==lag(za_type,) & rz_rodzaj_id==lag(rz_rodzaj_id,) & DZ_NAZWA==lag(DZ_NAZWA,) & DZ_DZIAL_ID==lag(DZ_DZIAL_ID,) & tw_tworca_id==lag(tw_tworca_id,) & za_tytul==lag(za_tytul,) & za_tytul_oryginalu==lag(za_tytul_oryginalu,) & za_jezyk_oryginalu==lag(za_jezyk_oryginalu,) & za_opis_wspoltworcow==lag(za_opis_wspoltworcow,) & za_wydanie==lag(za_wydanie,) & za_tomy==lag(za_tomy,) & za_instytucja==lag(za_instytucja,) & za_rok_wydania==lag(za_rok_wydania,) & za_opis_fizyczny_ksiazki==lag(za_opis_fizyczny_ksiazki,) & za_seria_wydawnicza==lag(za_seria_wydawnicza,) & tw_nazwisko==lag(tw_nazwisko,) & tw_imie==lag(tw_imie,) & pracownik==lag(pracownik,) & za_adnotacje==lag(za_adnotacje,) & BN_URL==lag(BN_URL,)} %>%
as.numeric() %>%
{.} -> out$same
#ucięcie zbyt długich ciągów znaków, by weszły do oracle'a
dlugosci <- data.frame(pole = c("am_nazwisko", "am_imie", "za_tytul", "za_tytul_oryginalu", "za_jezyk_oryginalu", "os_nazwisko", "os_imie", "za_opis_wspoltworcow", "za_instytucja", "wy_miejsce", "wy_nazwa", "za_opis_fizyczny_ksiazki", "za_seria_wydawnicza", "tw_nazwisko", "tw_imie", "za_adnotacje"), liczba_znakow = c(50,40,500,500,100,50,40,500,255,40,255,1000,255,200,40,2000))
x <- match(dlugosci$pole,names(out))
for (i in x) {
progress(match(i,x), max.value = length(x))
dlugosc <- dlugosci$liczba_znakow[match(names(out[i]),dlugosci$pole)]
out$za_adnotacje <- ifelse(dlugosc<nchar(as.character(out[,i]))&out$za_adnotacje!="",paste(out$za_adnotacje,paste("UWAGA! Pole ",as.character(names(out[i]))," było zbyt długie i zostało przycięte. Zredaguj treść pola.",sep = ""),sep = "# "),
ifelse(dlugosc<nchar(as.character(out[,i]))&out$za_adnotacje=="",paste("UWAGA! Pole ",as.character(names(out[i]))," było zbyt długie i zostało przycięte. Zredaguj treść pola.",sep = ""),as.character(out$za_adnotacje)))
out[,i] <- ifelse(dlugosc<nchar(as.character(out[,i])),as.character(substr(out[,i],1,dlugosc)),as.character(out[,i]))
}
Progress: 1 on 16 Progress: 2 on 16 Progress: 3 on 16 Progress: 4 on 16 Progress: 5 on 16 Progress: 6 on 16 Progress: 7 on 16 Progress: 8 on 16 Progress: 9 on 16 Progress: 10 on 16 Progress: 11 on 16 Progress: 12 on 16 Progress: 13 on 16 Progress: 14 on 16 Progress: 15 on 16 Progress: 16 on 16
out$rekord_BN[out$same == 1] <- ""
out$rz_nazwa[out$same == 1] <- ""
out$za_ro_rok[out$same == 1] <- ""
out$za_type[out$same == 1] <- ""
out$rz_rodzaj_id[out$same == 1] <- ""
out$DZ_NAZWA[out$same == 1] <- ""
out$DZ_DZIAL_ID[out$same == 1] <- ""
out$tw_tworca_id[out$same == 1] <- ""
out$za_tytul[out$same == 1] <- ""
out$za_tytul_oryginalu[out$same == 1] <- ""
out$za_jezyk_oryginalu[out$same == 1] <- ""
out$za_opis_wspoltworcow[out$same == 1] <- ""
out$za_wydanie[out$same == 1] <- ""
out$za_tomy[out$same == 1] <- ""
out$za_instytucja[out$same == 1] <- ""
out$za_rok_wydania[out$same == 1] <- ""
out$za_opis_fizyczny_ksiazki[out$same == 1] <- ""
out$za_seria_wydawnicza[out$same == 1] <- ""
out$tw_nazwisko[out$same == 1] <- ""
out$tw_imie[out$same == 1] <- ""
out$pracownik[out$same == 1] <- ""
out$za_adnotacje[out$same == 1] <- ""
out$BN_URL[out$same == 1] <- ""
out <- out %>%
select(1:33)
#pętla zapisująca po ok. 2000 wierszy z uwzględnieniem kompletności rekordów bibliograficznych rozpisanych na kilka wierszy
out <- out %>%
mutate(podzial = ifelse(rekord_BN!="",as.character(rekord_BN),NA)) %>%
fill(podzial)
ile <- unique(out$podzial)
ile <- split(unique(ile), ceiling(seq_along(unique(ile))/1500))
x <- 1:length(ile)
for (i in x) {
progress(match(i,x), max.value = length(x))
final <- out %>%
filter(podzial %in% ile[[i]]) %>%
select(-podzial)
write.xlsx(final, paste("C:/Users/",employee_name,"/Desktop/",import_year,"_antologie_do_importu",i,".xlsx",sep = ""),sheetName = "gotowe")
}
Progress: 1 on 1
bn_ok <- chunk11
data <- bn_ok %>%
filter(rodzaj_ksiazki=="współwydanie") %>%
mutate(redaktor_dzialu = paste(redaktor_dzialu,"_wsp",sep = ""))
#uwolnienie kolumn z danymi z bn i przetworzenie do PBL
#1: za_uwagi, rz_nazwa, za_ro_rok, za_type, rz_rodzaj_id, tw_tworca_id, tw_nazwisko, tw_imie, dz_dzial_id, dz_nazwa, redaktor_dzialu
pola_pbl <- data %>%
select(ZA_UWAGI, RZ_NAZWA, ZA_RO_ROK = rok, RZ_RODZAJ_ID, TW_TWORCA_ID, TW_NAZWISKO, TW_IMIE, DZ_DZIAL_ID, DZ_NAZWA, redaktor_dzialu) %>%
mutate(ZA_TYPE = "KS")
#2: autor
BN_autor <- data %>%
select(ZA_UWAGI,X245) %>%
mutate(X245 = str_extract(X245, "(?<=\\/\\$c)(.*?)(?= ;|$)"),
X245 = str_remove(X245,"\\.$"),
X245 = str_remove(X245,"\\["),
X245 = str_remove(X245,"\\]"),
AM_NAZWISKO = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),as.character(X245),str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\3")),
AM_IMIE = ifelse(grepl(" [a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž\\.]* ",X245),"*",str_replace(X245,"(^.*?)( )(?!.* )(.*$)","\\1")),
nazwa = str_replace_all(str_to_lower(paste(AM_NAZWISKO,AM_IMIE, sep = "")), "\\W", "")) %>%
left_join(.,PBL_autorzy %>% select(AM_AUTOR_ID,AM_KRYPTONIM,AM_LICZBA_ZAPISOW,nazwa) %>% filter(is.na(AM_KRYPTONIM)),by="nazwa") %>%
arrange(ZA_UWAGI,AM_NAZWISKO,AM_IMIE,-AM_LICZBA_ZAPISOW)
BN_autor$id_grupy <- cumsum(!duplicated(BN_autor[1:4]))
BN_autor <- BN_autor[!duplicated(BN_autor$id_grupy),] %>%
mutate(ZA_ADNOTACJE = NA) %>%
select(ZA_UWAGI,AM_NAZWISKO,AM_IMIE,ZA_ADNOTACJE,AM_AUTOR_ID)
#3: tytuł
#pole 245
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
if("$n" %in% colnames(marc_field_245)) {
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,`$a`,`$b`,`$n`,`$p`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = " "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = " "),
`$n` = paste(ifelse(is.na(`$n`),"",as.character(`$n`)),collapse = " "),
`$p` = paste(ifelse(is.na(`$p`),"",as.character(`$p`)),collapse = " ")) %>%
ungroup() %>%
unique() %>%
unite("ZA_TYTUL",`$a`:`$p`,sep = " ",na.rm = TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL," +"," "),
ZA_TYTUL = str_remove(ZA_TYTUL, "\\s+\\/\\s{0,}$"),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\.{3} \\.{3}","... "),
ZA_TYTUL = str_replace_all(ZA_TYTUL," ; ",". "),
ZA_TYTUL = gsub("( : )(.)",". \\U\\2",perl=TRUE,ZA_TYTUL)) %>%
select(ZA_UWAGI,ZA_TYTUL)
} else {
marc_field_245 <- marc_field_245 %>%
select(ZA_UWAGI,`$a`,`$b`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = " "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = " ")) %>%
ungroup() %>%
unique() %>%
unite("ZA_TYTUL",`$a`:`$b`,sep = " ",na.rm = TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL," +"," "),
ZA_TYTUL = str_remove(ZA_TYTUL, "\\s+\\/\\s{0,}$"),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,ZA_TYTUL),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",ZA_TYTUL),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,ZA_TYTUL),
ifelse(grepl("(\\W)( )(:|;)( )(.)",ZA_TYTUL),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,ZA_TYTUL),as.character(ZA_TYTUL))))),
ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\.{3} \\.{3}","... "),
ZA_TYTUL = str_replace_all(ZA_TYTUL," ; ",". "),
ZA_TYTUL = gsub("( : )(.)",". \\U\\2",perl=TRUE,ZA_TYTUL)) %>%
select(ZA_UWAGI,ZA_TYTUL)
}
tytul_wspolwydanie <- marc_field_245
#dopisanie gatunku do przedmiotowej na podstawie 655 i 650
gatunki_pbl <- data.frame(gatunek = c("aforyzm", "album", "antologia", "autobiografia", "dziennik", "esej", "felieton", "inne", "kazanie", "list", "miniatura prozą", "opowiadanie", "poemat", "powieść", "proza", "proza poetycka", "reportaż", "rozmyślanie religijne", "rysunek, obraz", "scenariusz", "szkic", "tekst biblijny", "tekst dramatyczny", "dramat", "wiersz", "wspomnienia", "wypowiedź", "pamiętniki", "poezja", "literatura podróżnicza", "satyra", "piosenka"))
#dramat, pamiętniki, poezja, literatura podróżnicza, satyra, piosenka
gatunki_bn <- data %>%
select(ZA_UWAGI,X655,X650)
gatunki_bn <- sqldf("select *
from gatunki_bn
left join gatunki_pbl on lower(gatunki_bn.X655) like '%'||gatunki_pbl.gatunek||'%'")
gatunki_bn <- sqldf("select *
from gatunki_bn
left join gatunki_pbl on lower(gatunki_bn.X650) like '%'||gatunki_pbl.gatunek||'%'")
colnames(gatunki_bn)[5] <- "gatunek2"
gatunki_bn <- gatunki_bn %>%
mutate(gatunek = ifelse(is.na(gatunek)&!is.na(gatunek2),as.character(gatunek2),as.character(gatunek)),
gatunek = ifelse(grepl("przypowieść",X655,ignore.case = TRUE)&!grepl("[^y]powieść",X655)&gatunek=="powieść","opowiadanie",as.character(gatunek))) %>%
filter(!is.na(gatunek)) %>%
select(ZA_UWAGI,gatunek) %>%
mutate(gatunek = ifelse(gatunek=="dramat","tekst dramatyczny",
ifelse(gatunek=="pamiętniki","wspomnienia",
ifelse(gatunek=="poezja","wiersz",
ifelse(gatunek=="literatura podróżnicza","reportaż",
ifelse(gatunek=="piosenka","wiersz",as.character(gatunek))))))) %>%
group_by(ZA_UWAGI) %>%
mutate(gatunek = paste(gatunek,collapse = ", ")) %>%
ungroup() %>%
unique() %>%
mutate(gatunek = gsub("(^.)","\\U\\1",perl = TRUE, gatunek))
#połączenie tytułu z gatunkiem
za_tytul <- marc_field_245 %>%
left_join(.,gatunki_bn,by="ZA_UWAGI") %>%
mutate(gatunek = paste("[",gatunek,"]",sep = ""),
gatunek = ifelse(gatunek=="[NA]",NA,as.character(gatunek))) %>%
unite("ZA_TYTUL", ZA_TYTUL:gatunek, sep = ". ",na.rm=TRUE) %>%
mutate(ZA_TYTUL = str_replace_all(ZA_TYTUL,"\\. \\.",". "),
ZA_TYTUL = str_replace(ZA_TYTUL,"(\\!)(\\.)|(\\?)(\\.)","\\1"))
#4: tytuł oryginału
#pole 246
marc_field_246 <- data %>%
select(ZA_UWAGI,X246)%>%
filter(X246!="") %>%
mutate(X246=str_remove_all(X246,"~"),
X246=str_replace_all(X246,"(^|\\|)","~\\1")) %>%
cSplit(.,"X246",sep = "~",direction = "long") %>%
filter(X246!="") %>%
mutate(X246=str_remove_all(X246,"^\\|")) %>%
mutate(indicator = str_replace_all(X246,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X246,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_246)[1]))
colnames(empty_table) <-subfield_list
marc_field_246<-cbind(marc_field_246,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_246$X246 <- str_replace(marc_field_246$X246,subfield_list_char[i],"|\\1")
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_246[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_246$X246),str_replace_all(gsub(string,"\\3",marc_field_246$X246),"\\${2}.", "~"),NA)
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
if("$n" %in% colnames(marc_field_246)) {
marc_field_246 <- marc_field_246[, colSums(is.na(marc_field_246)) != nrow(marc_field_246)] %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`,`$b`,`$n`,`$p`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = ""),
`$n` = paste(ifelse(is.na(`$n`),"",as.character(`$n`)),collapse = ""),
`$p` = paste(ifelse(is.na(`$p`),"",as.character(`$p`)),collapse = "")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`:`$p`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
} else if ("$b" %in% colnames(marc_field_246)){
marc_field_246 <- marc_field_246[, colSums(is.na(marc_field_246)) != nrow(marc_field_246)] %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`,`$b`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", "),
`$b` = paste(ifelse(is.na(`$b`),"",as.character(`$b`)),collapse = "")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`:`$b`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
} else {
marc_field_246 <- marc_field_246[, colSums(is.na(marc_field_246)) != nrow(marc_field_246)] %>%
filter(grepl("oryg",X246)) %>%
select(ZA_UWAGI,`$a`) %>%
group_by(ZA_UWAGI) %>%
mutate(`$a` = paste(ifelse(is.na(`$a`),"",as.character(`$a`)),collapse = ", ")) %>%
ungroup() %>%
unique() %>%
unite("X246",`$a`,sep = " ",na.rm = TRUE) %>%
mutate(X246 = str_replace_all(X246," +"," "),
X246 = str_remove(X246, "\\s+\\/\\s{0,}$"),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X246),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X246),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X246),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)",X246),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( ){0,1}(.)","\\1.\\2\\U\\5",perl = TRUE,X246),
ifelse(grepl("(\\W)( )(:|;)( ){0,1}(.)",X246),gsub("(\\W)( )(:|;)( ){0,1}(.)","\\1\\2\\U\\5",perl = TRUE,X246),as.character(X246))))),
X246 = str_replace_all(X246,"\\.{3} \\.{3}","... "),
X246 = gsub("( : )(.)",". \\U\\2",perl=TRUE,X246)) %>%
select(ZA_UWAGI, X246)
}
#pole 500
marc_field_500 <- data %>%
select(ZA_UWAGI,X500)%>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"~"),
X500=str_replace_all(X500,"(^|\\|)","~\\1")) %>%
cSplit(.,"X500",sep = "~",direction = "long") %>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"^\\|")) %>%
mutate(indicator = str_replace_all(X500,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X500,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_500)[1]))
colnames(empty_table) <-subfield_list
marc_field_500<-cbind(marc_field_500,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_500$X500 <- str_replace(marc_field_500$X500,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_500[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_500$X500),str_replace_all(gsub(string,"\\3",marc_field_500$X500),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_500 <- marc_field_500 %>%
filter(grepl("oryg\\.\\:",X500)) %>%
mutate(X500 = str_remove(`$a`,"^Tyt\\. oryg\\.: |^Tyt\\, oryg\\.: |^.*?tyt\\. oryg\\.: "),
X500 = str_remove(X500, "\\s+\\/\\s{0,}$"),
X500 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X500),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X500),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X500),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X500),as.character(X500))))),
X500 = ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(\\(|\\[)(.)","\\1.\\2\\5\\U\\6",perl=TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(\\(|\\[)(.)",X500),gsub("(\\W)( )(:|;)( )(\\(|\\[)(.)","\\1\\2\\U\\5\\6",perl = TRUE,X500),
ifelse(grepl("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)",X500),gsub("([a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźžIVX])( )(:|;)( )(.)","\\1.\\2\\U\\5",perl = TRUE,X500),
ifelse(grepl("(\\W)( )(:|;)( )(.)",X500),gsub("(\\W)( )(:|;)( )(.)","\\1\\2\\U\\5",perl = TRUE,X500),as.character(X500))))),
X500 = str_replace_all(X500,"\\.{3} \\.{3}","... "),
X500 = str_remove(X500, "\\.$"),
X500 = str_remove(X500,"(,{0,1} {0,1})\\d{4}.*$|(, t|. T)yt. oryg. cyklu:")) %>%
select(ZA_UWAGI,X500)
#tytuł oryginału
za_tytul_oryginalu <- data %>%
select(ZA_UWAGI) %>%
left_join(.,marc_field_246,by="ZA_UWAGI") %>%
left_join(.,marc_field_500,by="ZA_UWAGI") %>%
mutate(X500 = ifelse(is.na(X500),NA,
ifelse(grepl("oryg",X500),NA,as.character(X500))),
X500 = ifelse(!is.na(X500)&grepl("\\. - ",X500),str_replace(X500,"(.*?)(\\. - .*$)","\\1"),as.character(X500)),
X500 = ifelse(!is.na(X500)&grepl("Na książce pseud",X500),str_replace(X500,"(.*?)(\\. Na książce pseud.*$)","\\1"),as.character(X500)),
X500 = ifelse(!is.na(X500)&grepl("Przekł\\. wg",X500),str_replace(X500,"(.*?)(\\. Przekł\\. wg.*$)","\\1"),as.character(X500)),
ZA_TYTUL_ORYGINALU = ifelse(is.na(X246)&is.na(X500),NA,
ifelse(!is.na(X500),as.character(X500),as.character(X246))),
ZA_TYTUL_ORYGINALU = str_remove_all(ZA_TYTUL_ORYGINALU,'\\"')) %>%
select(ZA_UWAGI,ZA_TYTUL_ORYGINALU)
#5: język oryginału
marc_field_041 <- data %>%
select(ZA_UWAGI,X041)%>%
filter(X041!="") %>%
mutate(X041=str_replace_all(X041,"(^|\\|)","~\\1")) %>%
cSplit(.,"X041",sep = "~",direction = "long") %>%
filter(X041!="") %>%
mutate(X041=str_remove_all(X041,"^\\|")) %>%
mutate(indicator = str_replace_all(X041,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X041,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_041)[1]))
colnames(empty_table) <-subfield_list
marc_field_041<-cbind(marc_field_041,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_041$X041 <- str_replace(marc_field_041$X041,subfield_list_char[i],"|\\1")
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_041[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_041$X041),str_replace_all(gsub(string,"\\3",marc_field_041$X041),"\\${2}.", "~"),NA)
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
za_jezyk_oryginalu <- data %>%
select(ZA_UWAGI) %>%
left_join(.,marc_field_041 %>% select(ZA_UWAGI,ZA_JEZYK_ORYGINALU = `$a`),by="ZA_UWAGI") %>%
mutate(ZA_JEZYK_ORYGINALU = str_replace_all(ZA_JEZYK_ORYGINALU,"\\$a",",")) %>%
unique()
#6: współtwórcy
BN_wspoltworca <- data %>%
select(ZA_UWAGI,X245) %>%
mutate(wspoltworca = str_remove(str_remove_all(as.character(str_extract_all(data$X245,"(?<=; )(.*)(?=$)")),"\\.$"),"character\\(0\\)"),
wspoltworca = str_remove_all(wspoltworca," et al\\."))
marc_field_700 <- data %>%
select(ZA_UWAGI,X700)%>%
filter(X700!="") %>%
mutate(X700=str_replace_all(X700,"(..\\$a)","|\\1"),
X700=str_replace_all(X700,"(^|\\|)","~\\1")) %>%
cSplit(.,"X700",sep = "~",direction = "long") %>%
filter(X700!="") %>%
mutate(X700=str_remove_all(X700,"^\\|")) %>%
mutate(indicator = str_replace_all(X700,"(^.*?)(\\$.*)","\\1")) %>%
filter(X700!="")
subfield_list<- str_extract_all(data$X700,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_700)[1]))
colnames(empty_table) <-subfield_list
marc_field_700<-cbind(marc_field_700,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_700$X700 <- str_replace(marc_field_700$X700,subfield_list_char[i],"|\\1")
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_700[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_700$X700),str_replace_all(gsub(string,"\\3",marc_field_700$X700),"\\${2}.", "~"),NA)
}
Progress: 1 on 5 Progress: 2 on 5 Progress: 3 on 5 Progress: 4 on 5 Progress: 5 on 5
marc_field_700 <- marc_field_700 %>%
select(ZA_UWAGI,osoba = `$a`,funkcja = `$e`) %>%
filter(!is.na(funkcja)) %>%
mutate(osoba = str_remove(osoba,"(?<=[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž])(\\.$)"),
osoba = ifelse(!grepl(",",osoba)&str_count(osoba," ")==1,str_replace(osoba," ",", "),as.character(osoba)),
OS_NAZWISKO = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\1"),as.character(osoba)),
OS_IMIE = ifelse(grepl(",",osoba),str_replace_all(osoba,"(.*?)(, )(.*)","\\3"),"*"),
ws_prosty = str_replace_all(str_to_lower(osoba), "\\W", ""),
fu_prosta = str_replace_all(str_to_lower(funkcja), "\\W", ""))
BN_wspoltworca <- BN_wspoltworca %>%
left_join(marc_field_700,by="ZA_UWAGI")
x <- 1:nrow(BN_wspoltworca)
for (i in x) {
progress(match(i,x), max.value = length(x))
BN_wspoltworca$czy_nazwisko[i] <- grepl(BN_wspoltworca$OS_NAZWISKO[i],BN_wspoltworca$wspoltworca[i])
BN_wspoltworca$czy_imie[i] <- grepl(BN_wspoltworca$OS_IMIE[i],BN_wspoltworca$wspoltworca[i])
}
Progress: 1 on 38 Progress: 2 on 38 Progress: 3 on 38 Progress: 4 on 38 Progress: 5 on 38 Progress: 6 on 38 Progress: 7 on 38 Progress: 8 on 38 Progress: 9 on 38 Progress: 10 on 38 Progress: 11 on 38 Progress: 12 on 38 Progress: 13 on 38 Progress: 14 on 38 Progress: 15 on 38 Progress: 16 on 38 Progress: 17 on 38 Progress: 18 on 38 Progress: 19 on 38 Progress: 20 on 38 Progress: 21 on 38 Progress: 22 on 38 Progress: 23 on 38 Progress: 24 on 38 Progress: 25 on 38 Progress: 26 on 38 Progress: 27 on 38 Progress: 28 on 38 Progress: 29 on 38 Progress: 30 on 38 Progress: 31 on 38 Progress: 32 on 38 Progress: 33 on 38 Progress: 34 on 38 Progress: 35 on 38 Progress: 36 on 38 Progress: 37 on 38 Progress: 38 on 38
if (grepl("0|1",BN_wspoltworca$czy_nazwisko[1])) {
BN_wspoltworca <- BN_wspoltworca %>%
filter(czy_nazwisko==1|czy_imie==1)
} else {
BN_wspoltworca <- BN_wspoltworca %>%
filter(czy_nazwisko==TRUE|czy_imie==TRUE)
}
BN_wspoltworca <- BN_wspoltworca %>%
left_join(.,PBL_wspoltworcy %>% select(OS_OSOBA_ID,OS_LICZBA_ZAPISOW,nazwa_prosta),by=c("ws_prosty"="nazwa_prosta")) %>%
arrange(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,-OS_LICZBA_ZAPISOW)
BN_wspoltworca$id_grupy <- cumsum(!duplicated(BN_wspoltworca[1:4]))
BN_wspoltworca <- BN_wspoltworca[!duplicated(BN_wspoltworca$id_grupy),] %>%
left_join(.,PBL_funkcje,by=c("fu_prosta"="nazwa")) %>%
mutate(fo_symbol = ifelse(fo_symbol=="NULL",NA,as.character(fo_symbol)),
ZA_ADNOTACJE = NA) %>%
select(ZA_UWAGI,OS_NAZWISKO,OS_IMIE,OS_OSOBA_ID,fo_symbol,fo_nazwa,funkcja)
#7: opis współtwórców
za_opis_wspoltworcow <- BN_wspoltworca %>%
select(ZA_UWAGI,funkcja,OS_IMIE,OS_NAZWISKO) %>%
unite("za_opis_wspoltworcow",c(funkcja,OS_IMIE,OS_NAZWISKO),sep = " ",na.rm = TRUE) %>%
group_by(ZA_UWAGI) %>%
mutate(za_opis_wspoltworcow = paste(za_opis_wspoltworcow,collapse = ". ")) %>%
ungroup() %>%
unique() %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#8 wydanie
marc_field_250 <- data %>%
select(ZA_UWAGI,X250)%>%
filter(X250!="")
if (nrow(marc_field_250) != 0){
marc_field_250 <- marc_field_250 %>%
mutate(X250=str_replace_all(X250,"(^|\\|)","~\\1")) %>%
cSplit(.,"X250",sep = "~",direction = "long") %>%
filter(X250!="") %>%
mutate(X250=str_remove_all(X250,"^\\|")) %>%
mutate(indicator = str_replace_all(X250,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X250,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_250)[1]))
colnames(empty_table) <-subfield_list
marc_field_250<-cbind(marc_field_250,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_250$X250 <- str_replace(marc_field_250$X250,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_250[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_250$X250),str_replace_all(gsub(string,"\\3",marc_field_250$X250),"\\${2}.", "~"),NA)
}
za_wydanie <- marc_field_250 %>%
select(ZA_UWAGI, wydanie = `$a`) %>%
mutate(wydanie = str_remove(wydanie," \\/$")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
} else {
za_wydanie <- data.frame(ZA_UWAGI = "", X250 = "", indicator = "", stringsAsFactors = FALSE) %>%
mutate(`$a` = "",
wydanie = "") %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
}
#9: instytucja sprawcza
marc_field_245 <- data %>%
select(ZA_UWAGI,X245)%>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"~"),
X245=str_replace_all(X245,"(^|\\|)","~\\1")) %>%
cSplit(.,"X245",sep = "~",direction = "long") %>%
filter(X245!="") %>%
mutate(X245=str_remove_all(X245,"^\\|")) %>%
mutate(indicator = str_replace_all(X245,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X245,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_245)[1]))
colnames(empty_table) <-subfield_list
marc_field_245<-cbind(marc_field_245,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_245$X245 <- str_replace(marc_field_245$X245,subfield_list_char[i],"|\\1")
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_245[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_245$X245),str_replace_all(gsub(string,"\\3",marc_field_245$X245),"\\${2}.", "~"),NA)
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
za_instytucja <- marc_field_245 %>%
select(ZA_UWAGI,X245c=`$c`) %>%
filter(!is.na(X245c)) %>%
mutate(instytucja = ifelse(grepl("\\;",X245c),str_replace_all(X245c, "(.*?)(\\;(?!.*\\;))( )+(.*?$)","\\4"),"")) %>%
left_join(.,BN_wspoltworca,by="ZA_UWAGI")
x <- 1:lengths(za_instytucja[1])
for (i in x) {
progress(match(i,x), max.value = length(x))
za_instytucja$czy_nazwisko[i] <- grepl(za_instytucja$OS_NAZWISKO[i],za_instytucja$X245c[i])
za_instytucja$czy_imie[i] <- grepl(za_instytucja$OS_IMIE[i],za_instytucja$X245c[i])
}
Progress: 1 on 27 Progress: 2 on 27 Progress: 3 on 27 Progress: 4 on 27 Progress: 5 on 27 Progress: 6 on 27 Progress: 7 on 27 Progress: 8 on 27 Progress: 9 on 27 Progress: 10 on 27 Progress: 11 on 27 Progress: 12 on 27 Progress: 13 on 27 Progress: 14 on 27 Progress: 15 on 27 Progress: 16 on 27 Progress: 17 on 27 Progress: 18 on 27 Progress: 19 on 27 Progress: 20 on 27 Progress: 21 on 27 Progress: 22 on 27 Progress: 23 on 27 Progress: 24 on 27 Progress: 25 on 27 Progress: 26 on 27 Progress: 27 on 27
za_instytucja <- za_instytucja %>%
filter(is.na(czy_nazwisko)&is.na(czy_imie)) %>%
filter(instytucja!="") %>%
filter(!grepl("^\\[[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]|^[a-zaáàâãäăāåąæeéèêëěēėęiíìîïīįioóòôõöőøœuúùûüűūůyýcćčçdďđđgģğkķlłļnńñňņŋrřsśšşsßtťŧþţzżźž]",instytucja)) %>%
mutate(instytucja = str_remove(instytucja,"\\.$")) %>%
select(ZA_UWAGI,instytucja) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
#10: wydawnictwo
BN_wydawnictwo <- data %>%
select(ZA_UWAGI, X260) %>%
mutate(X260 = str_replace_all(X260,"s\\.n\\.", "b.w."),
X260 = str_replace_all(X260,"s\\.l\\.", "b.m."),
X260 = str_replace_all(X260,"S\\.l\\.", "b.m."),
X260 = str_remove(X260,"^\\\\+"),
rok_wydania = str_extract_all(X260, "(?<=\\$c).*(?=\\$e)|(?<=\\$c).*"),
bez_roku = str_replace_all(X260, ".\\$c.*", ""),
ile_wydawnictw = str_count(bez_roku, "\\$b"),
ile_miejsc = str_count(bez_roku, "\\$a"),
kolejnosc = str_replace_all(as.character(str_extract_all(bez_roku, "\\$.")), "[^a-z]", ""),
bez_roku = str_replace_all(bez_roku, ";\\$b", ":$b"),
wydaw_podziel = ifelse(ile_wydawnictw>ile_miejsc|kolejnosc=="caabb", str_replace_all(bez_roku, "(\\$a)(.*?)( :\\$b.*?)( :\\$b)", "\\1\\2\\3 ;$a\\2\\4"),bez_roku),
wydawnictwo_test = str_replace_all(wydaw_podziel, "(\\$b)(.*?)( ;\\$a)", "\\1\\2|\\3")) %>%
select(ZA_UWAGI,rok_wydania,wydawnictwo_test) %>%
cSplit(., "wydawnictwo_test", sep = "|", direction = "long") %>%
mutate(wydawnictwo = str_extract_all(wydawnictwo_test, "(?<=\\$b)(.*)"),
miejsce_wydania = str_replace_all(str_extract_all(wydawnictwo_test, "(?<=\\$a)(.*)(?= {0,1}: {0,1}\\$b)|(?<=\\$a)(.*)($)")," ;\\$a", ", "),
nazwa_prosta = str_to_lower(str_replace_all(str_replace_all(unlist(wydawnictwo_test), "\\$\\w", ""), "\\W", ""))) %>%
left_join(.,PBL_wydawnictwa,by="nazwa_prosta") %>%
mutate(to_samo = wydawnictwo==WY_NAZWA) %>%
arrange(ZA_UWAGI,-to_samo,-WY_LICZBA_ZAPISOW)
BN_wydawnictwo$id_grupy <- cumsum(!duplicated(BN_wydawnictwo[1:3]))
BN_wydawnictwo <- BN_wydawnictwo[!duplicated(BN_wydawnictwo$id_grupy),] %>%
mutate(WY_NAZWA = ifelse(!is.na(WY_NAZWA),as.character(WY_NAZWA),as.character(wydawnictwo)),
WY_MIASTO = ifelse(!is.na(WY_MIASTO),as.character(WY_MIASTO),trim(as.character(miejsce_wydania))),
rok_wydania = str_replace_all(rok_wydania, "(.*)(\\.)", "\\1"),
za_rok_wydania = ifelse(nchar(rok_wydania)==4,as.character(rok_wydania),NA),
do_opisu = ifelse(is.na(za_rok_wydania),paste("[",str_extract(rok_wydania,"\\d{4}"),"]",sep = ""),""),
WY_MIASTO = ifelse(substr(WY_MIASTO,1,1)=="["&substr(WY_MIASTO,nchar(WY_MIASTO),nchar(WY_MIASTO))!="]"&is.na(WY_WYDAWNICTWO_ID),paste(trim(WY_MIASTO),"]",sep = ""),as.character(WY_MIASTO))) %>%
select(ZA_UWAGI,WY_WYDAWNICTWO_ID,WY_NAZWA,WY_MIASTO,za_rok_wydania,do_opisu) %>%
mutate(WY_NAZWA = ifelse(str_count(WY_NAZWA, "\\[")>str_count(WY_NAZWA, "\\]"), paste(WY_NAZWA, "]", sep = ""),
ifelse(str_count(WY_NAZWA, "\\[")<str_count(WY_NAZWA, "\\]"), paste("[", WY_NAZWA, sep = ""), as.character(WY_NAZWA))),
WY_MIASTO = ifelse(str_count(WY_MIASTO, "\\[")>str_count(WY_MIASTO, "\\]"), paste(WY_MIASTO, "]", sep = ""),
ifelse(str_count(WY_MIASTO, "\\[")<str_count(WY_MIASTO, "\\]"), paste("[", WY_MIASTO, sep = ""), as.character(WY_MIASTO))))
#11: opis fizyczny książki
#pole 300 do opisu fizycznego
marc_field_300 <- data %>%
select(ZA_UWAGI,X300)%>%
filter(X300!="") %>%
mutate(X300=str_replace_all(X300,"(^|\\|)","~\\1")) %>%
cSplit(.,"X300",sep = "~",direction = "long") %>%
filter(X300!="") %>%
mutate(X300=str_remove_all(X300,"^\\|")) %>%
mutate(indicator = str_replace_all(X300,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X300,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_300)[1]))
colnames(empty_table) <-subfield_list
marc_field_300<-cbind(marc_field_300,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_300$X300 <- str_replace(marc_field_300$X300,subfield_list_char[i],"|\\1")
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_300[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_300$X300),str_replace_all(gsub(string,"\\3",marc_field_300$X300),"\\${2}.", "~"),NA)
}
Progress: 1 on 3 Progress: 2 on 3 Progress: 3 on 3
if("$e" %in% colnames(marc_field_300)) {
marc_field_300 <- marc_field_300 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$b` = str_remove(`$b`," \\;+$| \\:+$"),
`$e` = ifelse(grepl("CD-ROM|DVD|VCD|CD",`$e`)&grepl("\\+ dysk|płyt",`$e`),str_extract(`$e`,"(?<=\\+)(dysk|płyt.*?)(CD-ROM|DVD|VCD|CD)(\\)){0,1}"),
ifelse(grepl("CD-ROM|DVD|VCD|CD",`$e`),str_extract(`$e`,"(^.*?)(CD-ROM|DVD|VCD|CD)(\\)){0,1}"),NA)),
`$a` = ifelse(is.na(`$a`),"",as.character(`$a`)),
`$b` = ifelse(is.na(`$b`),"",as.character(`$b`)),
`$e` = ifelse(is.na(`$e`),"",as.character(`$e`)))
} else {
marc_field_300 <- marc_field_300 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$b` = str_remove(`$b`," \\;+$| \\:+$"),
`$a` = ifelse(is.na(`$a`),"",as.character(`$a`)),
`$b` = ifelse(is.na(`$b`),"",as.character(`$b`)))
}
#pole 500 do opisu fizycznego
marc_field_500 <- data %>%
select(ZA_UWAGI,X500)%>%
filter(X500!="") %>%
mutate(X500=str_replace_all(X500,"(^|\\|)","~\\1")) %>%
cSplit(.,"X500",sep = "~",direction = "long") %>%
filter(X500!="") %>%
mutate(X500=str_remove_all(X500,"^\\|")) %>%
mutate(indicator = str_replace_all(X500,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X500,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_500)[1]))
colnames(empty_table) <-subfield_list
marc_field_500<-cbind(marc_field_500,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_500$X500 <- str_replace(marc_field_500$X500,subfield_list_char[i],"|\\1")
}
Progress: 1 on 1
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_500[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_500$X500),str_replace_all(gsub(string,"\\3",marc_field_500$X500),"\\${2}.", "~"),NA)
}
Progress: 1 on 1
marc_field_500 <- marc_field_500 %>%
mutate(`$a` = ifelse(grepl("oryg(\\.|\\,)",X500)&grepl("pseud|nazwa",X500,ignore.case = TRUE),str_replace(`$a`,"(^.*?)(\\. )(\\p{Lu}.*$)","\\3"),as.character(`$a`))) %>%
filter(!grepl("oryg(\\.|\\,)",`$a`)&grepl("pseud|nazwa|dotycz|pol",`$a`,ignore.case = TRUE)) %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"))
#pole 546 do opisu fizycznego
marc_field_546 <- data %>%
select(ZA_UWAGI,X546)%>%
filter(X546!="")
if (nrow(marc_field_546) != 0){
marc_field_546 <- marc_field_546 %>%
mutate(X546=str_replace_all(X546,"(^|\\|)","~\\1")) %>%
cSplit(.,"X546",sep = "~",direction = "long") %>%
filter(X546!="") %>%
mutate(X546=str_remove_all(X546,"^\\|")) %>%
mutate(indicator = str_replace_all(X546,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X546,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_546)[1]))
colnames(empty_table) <-subfield_list
marc_field_546<-cbind(marc_field_546,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_546$X546 <- str_replace(marc_field_546$X546,subfield_list_char[i],"|\\1")
}
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_546[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_546$X546),str_replace_all(gsub(string,"\\3",marc_field_546$X546),"\\${2}.", "~"),NA)
}
marc_field_546 <- marc_field_546 %>%
mutate(`$a` = str_remove(`$a`," \\;+$| \\:+$"))
} else {
marc_field_546 <- data.frame(ZA_UWAGI = "", X546 = "", indicator = "", stringsAsFactors = FALSE) %>%
mutate(`$a` = "")
}
Progress: 1 on 1 Progress: 1 on 1
if("$e" %in% colnames(marc_field_300)) {
za_opis_ks <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,do_opisu),by="ZA_UWAGI") %>%
left_join(.,marc_field_300 %>% select(ZA_UWAGI,X300a=`$a`,X300b=`$b`,X300e=`$e`),by="ZA_UWAGI") %>%
left_join(.,marc_field_500 %>% select(ZA_UWAGI,X500a=`$a`),by="ZA_UWAGI") %>%
left_join(.,marc_field_546 %>% select(ZA_UWAGI,X546a=`$a`),by="ZA_UWAGI")
za_opis_ks[is.na(za_opis_ks)] <- ""
za_opis_ks <- za_opis_ks %>%
mutate(za_opis_ks = paste(ifelse(do_opisu!="",paste(as.character(do_opisu),", ",sep = ""),""),ifelse(X300a!="",paste(as.character(X300a),", ",sep = ""),""),ifelse(X300b!="",paste(as.character(X300b),", ",sep = ""),""),ifelse(X300e!="",paste(as.character(X300e),", ",sep = ""),""),ifelse(X500a!="",paste(as.character(X500a),", ",sep = ""),""),ifelse(X546a!="",as.character(X546a),""),sep = ""),
za_opis_ks = str_remove(za_opis_ks,"(, )+$")) %>%
select(ZA_UWAGI,za_opis_ks) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(za_opis_ks))
} else {
za_opis_ks <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,do_opisu),by="ZA_UWAGI") %>%
left_join(.,marc_field_300 %>% select(ZA_UWAGI,X300a=`$a`,X300b=`$b`),by="ZA_UWAGI") %>%
left_join(.,marc_field_500 %>% select(ZA_UWAGI,X500a=`$a`),by="ZA_UWAGI") %>%
left_join(.,marc_field_546 %>% select(ZA_UWAGI,X546a=`$a`),by="ZA_UWAGI")
za_opis_ks[is.na(za_opis_ks)] <- ""
za_opis_ks <- za_opis_ks %>%
mutate(za_opis_ks = paste(ifelse(do_opisu!="",paste(as.character(do_opisu),", ",sep = ""),""),ifelse(X300a!="",paste(as.character(X300a),", ",sep = ""),""),ifelse(X300b!="",paste(as.character(X300b),", ",sep = ""),""),ifelse(X500a!="",paste(as.character(X500a),", ",sep = ""),""),ifelse(X546a!="",as.character(X546a),""),sep = ""),
za_opis_ks = str_remove(za_opis_ks,"(, )+$")) %>%
select(ZA_UWAGI,za_opis_ks) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(za_opis_ks))
}
za_opis_ks$id_grupy <- cumsum(!duplicated(za_opis_ks[1]))
za_opis_ks <- za_opis_ks[!duplicated(za_opis_ks$id_grupy),] %>%
select(-id_grupy)
wsp_info <- za_opis_ks %>%
left_join(tytul_wspolwydanie,by="ZA_UWAGI") %>%
left_join(BN_autor,by="ZA_UWAGI") %>%
mutate(wsp = paste("[Współwyd.: ",ifelse(AM_IMIE=="*","",AM_IMIE)," ",AM_NAZWISKO,": ",ZA_TYTUL,"]", sep = ""),
za_uwagi2 = str_remove_all(ZA_UWAGI,".$"))
wsp_info %$%
{ za_uwagi2 == dplyr::lag(za_uwagi2, 1)} %>%
as.numeric() %>%
{.} -> wsp_info$same
wsp_info$same[1] <- 0
wsp_info <- wsp_info %>%
arrange(za_uwagi2,-same)
za_opis_ks <- za_opis_ks %>%
bind_cols(wsp_info %>% select(wsp)) %>%
unite("za_opis_ks",za_opis_ks:wsp,remove = TRUE,sep = " ")
#12: seria wydawnicza
marc_field_490 <- data %>%
select(ZA_UWAGI,X490,X800,X830) %>%
mutate(X490 = ifelse(grepl("U\\+",X490),as.character(X830),as.character(X490))) %>%
mutate(X800 = ifelse(X490!="","",as.character(X800)),
X830 = ifelse(X490!="","",as.character(X830)),
X800 = str_replace(X800,"(\\$a)(.*)(\\$t)","\\1"),
X490 = ifelse(X490==""&X830!="",as.character(X830),
ifelse(X490==""&X800!="",as.character(X800),as.character(X490)))) %>%
select(ZA_UWAGI,X490) %>%
filter(X490!="") %>%
mutate(X490=str_replace_all(X490,"(^|\\|)","~\\1")) %>%
cSplit(.,"X490",sep = "~",direction = "long") %>%
filter(X490!="") %>%
mutate(X490=str_remove_all(X490,"^\\|")) %>%
mutate(indicator = str_replace_all(X490,"(^.*?)(\\$.*)","\\1"))
subfield_list<- str_extract_all(data$X490,"\\$.")
subfield_list<- unique(unlist(subfield_list))
empty_table<- data.frame(matrix(ncol = length(subfield_list),nrow = lengths(marc_field_490)[1]))
colnames(empty_table) <-subfield_list
marc_field_490<-cbind(marc_field_490,empty_table)
subfield_list_char <- paste("(",subfield_list,")",sep = "")
subfield_list_char <- str_replace_all(subfield_list_char,"\\$","\\\\$")
x <- 1:length(subfield_list)
for (i in x) {
progress(match(i,x), max.value = length(x))
marc_field_490$X490 <- str_replace(marc_field_490$X490,subfield_list_char[i],"|\\1")
}
Progress: 1 on 2 Progress: 2 on 2
for (i in x) {
progress(match(i,x), max.value = length(x))
subfield_list_char2 <- str_replace_all(subfield_list,"\\$","\\\\$")
string_a <- "(^)(.*?\\|"
string_b <- subfield_list_char2[i]
string_c <- ")(.*?)(\\,{0,1})((\\|\\$)(.*)|$)"
string <- paste(string_a,string_b,string_c,sep = "")
marc_field_490[,i+3] <- ifelse(grepl(subfield_list_char2[i],marc_field_490$X490),str_replace_all(gsub(string,"\\3",marc_field_490$X490),"\\${2}.", "~"),NA)
}
Progress: 1 on 2 Progress: 2 on 2
if ("$v" %in% colnames(marc_field_490)){
za_seria_wydawnicza <- marc_field_490 %>%
mutate(`$a` = str_replace_all(`$a`,"(=)(\\$a)","\\1 "),
`$a` = str_remove(`$a`," \\;+$| \\:+$"),
`$v` = ifelse(is.na(`$v`),"",as.character(`$v`))) %>%
filter(!is.na(`$a`)) %>%
mutate(seria = str_remove(paste("(",`$a`,"; ",`$v`,")",sep = ""),"; (?=\\)$)"),
seria = gsub("( : )(.)",". \\U\\2",perl=TRUE,seria)) %>%
select(ZA_UWAGI,seria) %>%
group_by(ZA_UWAGI) %>%
mutate(seria = paste(seria,collapse = " ")) %>%
ungroup() %>%
unique() %>%
mutate(seria = str_replace_all(seria,"\\$.","; ")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
} else {
za_seria_wydawnicza <- marc_field_490 %>%
mutate(`$a` = str_replace_all(`$a`,"(=)(\\$a)","\\1 "),
`$a` = str_remove(`$a`," \\;+$| \\:+$")) %>%
filter(!is.na(`$a`)) %>%
mutate(seria = str_remove(paste("(",`$a`,")",sep = ""),"; (?=\\)$)"),
seria = gsub("( : )(.)",". \\U\\2",perl=TRUE,seria)) %>%
select(ZA_UWAGI,seria) %>%
group_by(ZA_UWAGI) %>%
mutate(seria = paste(seria,collapse = " ")) %>%
ungroup() %>%
unique() %>%
mutate(seria = str_replace_all(seria,"\\$.","; ")) %>%
right_join(.,data %>% select(ZA_UWAGI),by="ZA_UWAGI")
}
#13: tomy
za_tomy <- data %>%
select(ZA_UWAGI) %>%
mutate(za_tomy = NA)
#14: adnotacje
za_adnotacje <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_autor %>% select(ZA_UWAGI,ZA_ADNOTACJE),by="ZA_UWAGI") %>%
mutate(ZA_ADNOTACJE = ifelse(is.na(ZA_ADNOTACJE),"",paste(as.character(ZA_ADNOTACJE),"# ",sep = "")),
ZA_ADNOTACJE = str_remove(ZA_ADNOTACJE,"(# )+$")) %>%
select(ZA_UWAGI,ZA_ADNOTACJE) %>%
unique() %>%
arrange(ZA_UWAGI,-nchar(ZA_ADNOTACJE))
za_adnotacje$id_grupy <- cumsum(!duplicated(za_adnotacje[1]))
za_adnotacje <- za_adnotacje[!duplicated(za_adnotacje$id_grupy),] %>%
select(-id_grupy)
#15: BN_URL
BN_URL <- data %>%
select(ZA_UWAGI,BN_URL)
#wyrównanie liczby wierszy do liczby wierszy obiektu data
BN_autor <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_autor %>% select(ZA_UWAGI,AM_AUTOR_ID,AM_NAZWISKO,AM_IMIE),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, AM_AUTOR_ID = paste(AM_AUTOR_ID, collapse="|"), AM_NAZWISKO = paste(AM_NAZWISKO, collapse="|"), AM_IMIE = paste(AM_IMIE, collapse="|"))
BN_wspoltworca <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wspoltworca %>% select(ZA_UWAGI,OS_OSOBA_ID,OS_NAZWISKO,OS_IMIE,fo_symbol),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, OS_OSOBA_ID = paste(OS_OSOBA_ID, collapse="|"), OS_NAZWISKO = paste(OS_NAZWISKO, collapse="|"), OS_IMIE = paste(OS_IMIE, collapse="|"), fo_symbol = paste(fo_symbol, collapse="|")) %>%
mutate(fo_symbol = ifelse(fo_symbol=="NULL","NA",as.character(fo_symbol)))
BN_wydawnictwo <- data %>%
select(ZA_UWAGI) %>%
left_join(.,BN_wydawnictwo %>% select(ZA_UWAGI,WY_WYDAWNICTWO_ID,WY_NAZWA,WY_MIASTO,za_rok_wydania),by="ZA_UWAGI") %>%
ddply(., .(ZA_UWAGI), summarize, WY_WYDAWNICTWO_ID = paste(WY_WYDAWNICTWO_ID, collapse="|"), WY_NAZWA = paste(WY_NAZWA, collapse="|"), WY_MIASTO = paste(WY_MIASTO, collapse="|"), za_rok_wydania = paste(unique(za_rok_wydania), collapse="|")) %>%
mutate(za_rok_wydania = ifelse(za_rok_wydania=="NA","",as.integer(za_rok_wydania)))
pojawi戼㸳y si攼㹡 warto㤼㹣ci NA na skutek przekszta戼㸳cenia
#połączenie wszystkich elementów w jedną tabelę
kolejnosc <- data.frame(kolejnosc=c("ZA_UWAGI","RZ_NAZWA","ZA_RO_ROK","ZA_TYPE","RZ_RODZAJ_ID","DZ_NAZWA","DZ_DZIAL_ID","TW_TWORCA_ID","AM_AUTOR_ID","AM_NAZWISKO","AM_IMIE","ZA_TYTUL","ZA_TYTUL_ORYGINALU","ZA_JEZYK_ORYGINALU","OS_OSOBA_ID","OS_NAZWISKO","OS_IMIE","fo_symbol","za_opis_wspoltworcow","wydanie","za_tomy","instytucja","WY_WYDAWNICTWO_ID","WY_MIASTO","WY_NAZWA","za_rok_wydania","za_opis_ks","seria","TW_NAZWISKO","TW_IMIE","redaktor_dzialu","ZA_ADNOTACJE","BN_URL"))
polaczone <- data %>%
select(ZA_UWAGI) %>%
left_join(.,pola_pbl,by = "ZA_UWAGI") %>%
left_join(.,BN_autor,by = "ZA_UWAGI") %>%
left_join(.,za_tytul,by = "ZA_UWAGI") %>%
left_join(.,za_tytul_oryginalu,by = "ZA_UWAGI") %>%
left_join(.,za_jezyk_oryginalu,by = "ZA_UWAGI") %>%
left_join(.,BN_wspoltworca,by = "ZA_UWAGI") %>%
left_join(.,za_opis_wspoltworcow,by = "ZA_UWAGI") %>%
left_join(.,za_wydanie,by = "ZA_UWAGI") %>%
left_join(.,za_instytucja,by = "ZA_UWAGI") %>%
left_join(.,BN_wydawnictwo,by = "ZA_UWAGI") %>%
left_join(.,za_opis_ks,by = "ZA_UWAGI") %>%
left_join(.,za_seria_wydawnicza,by = "ZA_UWAGI") %>%
left_join(.,za_tomy,by = "ZA_UWAGI") %>%
left_join(.,za_adnotacje,by = "ZA_UWAGI") %>%
left_join(.,BN_URL,by = "ZA_UWAGI") %>%
select(as.vector(kolejnosc$kolejnosc))
colnames(polaczone) <- c("rekord_BN","rz_nazwa","za_ro_rok","za_type","rz_rodzaj_id","DZ_NAZWA","DZ_DZIAL_ID","tw_tworca_id","am_autor_id","am_nazwisko","am_imie","za_tytul","za_tytul_oryginalu","za_jezyk_oryginalu","os_osoba_id","os_nazwisko","os_imie","fo_symbol","za_opis_wspoltworcow","za_wydanie","za_tomy","za_instytucja","wy_wydawnictwo_id","wy_miejsce","wy_nazwa","za_rok_wydania","za_opis_fizyczny_ksiazki","za_seria_wydawnicza","tw_nazwisko","tw_imie","pracownik","za_adnotacje","BN_URL")
#zasygnalizowanie niepoprawnego kodowania
x <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("<U\\+(....)>",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)!=0,paste(polaczone$za_adnotacje,paste("UWAGA! Błąd kodowania w polu ",as.character(names(polaczone[i]))," Znajdź frazę \"???\" i zredaguj pole.",sep = ""),sep = "# "),paste("UWAGA! Błąd kodowania w polu ",as.character(names(polaczone[i]))," Znajdź frazę \"???\" i zredaguj pole.",sep = "")),as.character(polaczone$za_adnotacje))
polaczone[,i] <- gsub("<U\\+(....)>", "???", polaczone[,i])
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności znaku $ w którymś z pól
X <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("\\$",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)==0,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano znak \"$\". Zredaguj treść pola.",sep = ""),paste(polaczone$za_adnotacje,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano znak \"$\". Zredaguj treść pola.",sep = ""),sep = "# ")),as.character(polaczone$za_adnotacje))
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności frazy "character(0)" w którymś z pól
X <- 1:(length(polaczone)-2)
for (i in x) {
progress(match(i,x), max.value = length(x))
polaczone$za_adnotacje <- ifelse(grepl("character\\(0\\)",polaczone[,i]),
ifelse(nchar(polaczone$za_adnotacje)==0,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano frazę \"character(0)\". Zredaguj treść pola.",sep = ""),paste(polaczone$za_adnotacje,paste("UWAGA! Ze względu na błędny zapis BN w polu ",as.character(names(polaczone[i]))," wydrukowano frazę \"character(0)\". Zredaguj treść pola.",sep = ""),sep = "# ")),as.character(polaczone$za_adnotacje))
}
Progress: 1 on 31 Progress: 2 on 31 Progress: 3 on 31 Progress: 4 on 31 Progress: 5 on 31 Progress: 6 on 31 Progress: 7 on 31 Progress: 8 on 31 Progress: 9 on 31 Progress: 10 on 31 Progress: 11 on 31 Progress: 12 on 31 Progress: 13 on 31 Progress: 14 on 31 Progress: 15 on 31 Progress: 16 on 31 Progress: 17 on 31 Progress: 18 on 31 Progress: 19 on 31 Progress: 20 on 31 Progress: 21 on 31 Progress: 22 on 31 Progress: 23 on 31 Progress: 24 on 31 Progress: 25 on 31 Progress: 26 on 31 Progress: 27 on 31 Progress: 28 on 31 Progress: 29 on 31 Progress: 30 on 31 Progress: 31 on 31
#zasygnalizowanie obecności znaku # w opisie współtwórców
polaczone$za_adnotacje <- ifelse(grepl("\\#",polaczone$za_opis_wspoltworcow),
ifelse(nchar(polaczone$za_adnotacje)==0,"UWAGA! Ze względu na konflikt w opisie współtwórców wybierz właściwą wartość (strefa odpowiedzialności \"#\" współtwórcy z pola 700).",paste(polaczone$za_adnotacje,"UWAGA! Ze względu na konflikt w opisie współtwórców wybierz właściwą wartość (strefa odpowiedzialności # współtwórcy z pola 700).",sep = "# ")),as.character(polaczone$za_adnotacje))
out <- cSplit(polaczone, c("am_autor_id", "am_nazwisko", "am_imie","os_osoba_id","os_nazwisko", "os_imie", "fo_symbol","wy_wydawnictwo_id","wy_miejsce","wy_nazwa"),sep = "|",direction = "long") %>%
unique()
out$rekord_BN <- ifelse(is.na(out$rekord_BN),'',as.character(out$rekord_BN))
out$rz_nazwa <- ifelse(is.na(out$rz_nazwa),'',as.character(out$rz_nazwa))
out$za_ro_rok <- ifelse(is.na(out$za_ro_rok),'',as.character(out$za_ro_rok))
out$za_type <- ifelse(is.na(out$za_type),'',as.character(out$za_type))
out$rz_rodzaj_id <- ifelse(is.na(out$rz_rodzaj_id),'',as.character(out$rz_rodzaj_id))
out$DZ_NAZWA <- ifelse(is.na(out$DZ_NAZWA),'',as.character(out$DZ_NAZWA))
out$DZ_DZIAL_ID <- ifelse(is.na(out$DZ_DZIAL_ID),'',as.character(out$DZ_DZIAL_ID))
out$tw_tworca_id <- ifelse(is.na(out$tw_tworca_id),'',as.character(out$tw_tworca_id))
out$am_autor_id <- ifelse(is.na(out$am_autor_id),'',as.character(out$am_autor_id))
out$am_nazwisko <- ifelse(is.na(out$am_nazwisko),'',as.character(out$am_nazwisko))
out$am_imie <- ifelse(is.na(out$am_imie),'',as.character(out$am_imie))
out$za_tytul <- ifelse(is.na(out$za_tytul),'',as.character(out$za_tytul))
out$za_tytul_oryginalu <- ifelse(is.na(out$za_tytul_oryginalu),'',as.character(out$za_tytul_oryginalu))
out$za_jezyk_oryginalu <- ifelse(is.na(out$za_jezyk_oryginalu),'',as.character(out$za_jezyk_oryginalu))
out$os_osoba_id <- ifelse(is.na(out$os_osoba_id),'',as.character(out$os_osoba_id))
out$os_nazwisko <- ifelse(is.na(out$os_nazwisko),'',as.character(out$os_nazwisko))
out$os_imie <- ifelse(is.na(out$os_imie),'',as.character(out$os_imie))
out$fo_symbol <- ifelse(is.na(out$fo_symbol),'',as.character(out$fo_symbol))
out$za_opis_wspoltworcow <- ifelse(is.na(out$za_opis_wspoltworcow),'',as.character(out$za_opis_wspoltworcow))
out$za_wydanie <- ifelse(is.na(out$za_wydanie),'',as.character(out$za_wydanie))
out$za_tomy <- ifelse(is.na(out$za_tomy),'',as.character(out$za_tomy))
out$za_instytucja <- ifelse(is.na(out$za_instytucja),'',as.character(out$za_instytucja))
out$wy_wydawnictwo_id <- ifelse(is.na(out$wy_wydawnictwo_id),'',as.character(out$wy_wydawnictwo_id))
out$wy_miejsce <- ifelse(is.na(out$wy_miejsce),'',as.character(out$wy_miejsce))
out$wy_nazwa <- ifelse(is.na(out$wy_nazwa),'',as.character(out$wy_nazwa))
out$za_rok_wydania <- ifelse(is.na(out$za_rok_wydania),'',as.character(out$za_rok_wydania))
out$za_opis_fizyczny_ksiazki <- ifelse(is.na(out$za_opis_fizyczny_ksiazki),'',as.character(out$za_opis_fizyczny_ksiazki))
out$za_seria_wydawnicza <- ifelse(is.na(out$za_seria_wydawnicza),'',as.character(out$za_seria_wydawnicza))
out$tw_nazwisko <- ifelse(is.na(out$tw_nazwisko),'',as.character(out$tw_nazwisko))
out$tw_imie <- ifelse(is.na(out$tw_imie),'',as.character(out$tw_imie))
out$pracownik <- ifelse(is.na(out$pracownik),'',as.character(out$pracownik))
out$za_adnotacje <- ifelse(is.na(out$za_adnotacje),'',as.character(out$za_adnotacje))
out$BN_URL <- ifelse(is.na(out$BN_URL),'',as.character(out$BN_URL))
out %$%
{ rekord_BN==lag(rekord_BN,) & rz_nazwa==lag(rz_nazwa,) & za_ro_rok==lag(za_ro_rok,) & za_type==lag(za_type,) & rz_rodzaj_id==lag(rz_rodzaj_id,) & DZ_NAZWA==lag(DZ_NAZWA,) & DZ_DZIAL_ID==lag(DZ_DZIAL_ID,) & tw_tworca_id==lag(tw_tworca_id,) & za_tytul==lag(za_tytul,) & za_tytul_oryginalu==lag(za_tytul_oryginalu,) & za_jezyk_oryginalu==lag(za_jezyk_oryginalu,) & za_opis_wspoltworcow==lag(za_opis_wspoltworcow,) & za_wydanie==lag(za_wydanie,) & za_tomy==lag(za_tomy,) & za_instytucja==lag(za_instytucja,) & za_rok_wydania==lag(za_rok_wydania,) & za_opis_fizyczny_ksiazki==lag(za_opis_fizyczny_ksiazki,) & za_seria_wydawnicza==lag(za_seria_wydawnicza,) & tw_nazwisko==lag(tw_nazwisko,) & tw_imie==lag(tw_imie,) & pracownik==lag(pracownik,) & za_adnotacje==lag(za_adnotacje,) & BN_URL==lag(BN_URL,)} %>%
as.numeric() %>%
{.} -> out$same
out$same[1] <- 0
out$dzielone <- paste(out$am_autor_id,out$am_nazwisko,out$am_imie,out$os_osoba_id,out$os_nazwisko,out$os_imie,out$fo_symbol,out$wy_wydawnictwo_id,out$wy_miejsce,out$wy_nazwa,sep = "")
out <- out %>%
filter(!(same==1&dzielone=="")) %>%
select(1:33)
out %$%
{ rekord_BN==lag(rekord_BN,) & rz_nazwa==lag(rz_nazwa,) & za_ro_rok==lag(za_ro_rok,) & za_type==lag(za_type,) & rz_rodzaj_id==lag(rz_rodzaj_id,) & DZ_NAZWA==lag(DZ_NAZWA,) & DZ_DZIAL_ID==lag(DZ_DZIAL_ID,) & tw_tworca_id==lag(tw_tworca_id,) & za_tytul==lag(za_tytul,) & za_tytul_oryginalu==lag(za_tytul_oryginalu,) & za_jezyk_oryginalu==lag(za_jezyk_oryginalu,) & za_opis_wspoltworcow==lag(za_opis_wspoltworcow,) & za_wydanie==lag(za_wydanie,) & za_tomy==lag(za_tomy,) & za_instytucja==lag(za_instytucja,) & za_rok_wydania==lag(za_rok_wydania,) & za_opis_fizyczny_ksiazki==lag(za_opis_fizyczny_ksiazki,) & za_seria_wydawnicza==lag(za_seria_wydawnicza,) & tw_nazwisko==lag(tw_nazwisko,) & tw_imie==lag(tw_imie,) & pracownik==lag(pracownik,) & za_adnotacje==lag(za_adnotacje,) & BN_URL==lag(BN_URL,)} %>%
as.numeric() %>%
{.} -> out$same
#ucięcie zbyt długich ciągów znaków, by weszły do oracle'a
dlugosci <- data.frame(pole = c("am_nazwisko", "am_imie", "za_tytul", "za_tytul_oryginalu", "za_jezyk_oryginalu", "os_nazwisko", "os_imie", "za_opis_wspoltworcow", "za_instytucja", "wy_miejsce", "wy_nazwa", "za_opis_fizyczny_ksiazki", "za_seria_wydawnicza", "tw_nazwisko", "tw_imie", "za_adnotacje"), liczba_znakow = c(50,40,500,500,100,50,40,500,255,40,255,1000,255,200,40,2000))
x <- match(dlugosci$pole,names(out))
for (i in x) {
progress(match(i,x), max.value = length(x))
dlugosc <- dlugosci$liczba_znakow[match(names(out[i]),dlugosci$pole)]
out$za_adnotacje <- ifelse(dlugosc<nchar(as.character(out[,i]))&out$za_adnotacje!="",paste(out$za_adnotacje,paste("UWAGA! Pole ",as.character(names(out[i]))," było zbyt długie i zostało przycięte. Zredaguj treść pola.",sep = ""),sep = "# "),
ifelse(dlugosc<nchar(as.character(out[,i]))&out$za_adnotacje=="",paste("UWAGA! Pole ",as.character(names(out[i]))," było zbyt długie i zostało przycięte. Zredaguj treść pola.",sep = ""),as.character(out$za_adnotacje)))
out[,i] <- ifelse(dlugosc<nchar(as.character(out[,i])),as.character(substr(out[,i],1,dlugosc)),as.character(out[,i]))
}
Progress: 1 on 16 Progress: 2 on 16 Progress: 3 on 16 Progress: 4 on 16 Progress: 5 on 16 Progress: 6 on 16 Progress: 7 on 16 Progress: 8 on 16 Progress: 9 on 16 Progress: 10 on 16 Progress: 11 on 16 Progress: 12 on 16 Progress: 13 on 16 Progress: 14 on 16 Progress: 15 on 16 Progress: 16 on 16
out$rekord_BN[out$same == 1] <- ""
out$rz_nazwa[out$same == 1] <- ""
out$za_ro_rok[out$same == 1] <- ""
out$za_type[out$same == 1] <- ""
out$rz_rodzaj_id[out$same == 1] <- ""
out$DZ_NAZWA[out$same == 1] <- ""
out$DZ_DZIAL_ID[out$same == 1] <- ""
out$tw_tworca_id[out$same == 1] <- ""
out$za_tytul[out$same == 1] <- ""
out$za_tytul_oryginalu[out$same == 1] <- ""
out$za_jezyk_oryginalu[out$same == 1] <- ""
out$za_opis_wspoltworcow[out$same == 1] <- ""
out$za_wydanie[out$same == 1] <- ""
out$za_tomy[out$same == 1] <- ""
out$za_instytucja[out$same == 1] <- ""
out$za_rok_wydania[out$same == 1] <- ""
out$za_opis_fizyczny_ksiazki[out$same == 1] <- ""
out$za_seria_wydawnicza[out$same == 1] <- ""
out$tw_nazwisko[out$same == 1] <- ""
out$tw_imie[out$same == 1] <- ""
out$pracownik[out$same == 1] <- ""
out$za_adnotacje[out$same == 1] <- ""
out$BN_URL[out$same == 1] <- ""
out <- out %>%
select(1:33)
#pętla zapisująca po ok. 2000 wierszy z uwzględnieniem kompletności rekordów bibliograficznych rozpisanych na kilka wierszy
out <- out %>%
mutate(podzial = ifelse(rekord_BN!="",as.character(rekord_BN),NA)) %>%
fill(podzial)
ile <- unique(out$podzial)
ile <- split(unique(ile), ceiling(seq_along(unique(ile))/1500))
x <- 1:length(ile)
for (i in x) {
progress(match(i,x), max.value = length(x))
final <- out %>%
filter(podzial %in% ile[[i]]) %>%
select(-podzial)
write.xlsx(final, paste("C:/Users/",employee_name,"/Desktop/",import_year,"_wspolwydanie_do_importu",i,".xlsx",sep = ""),sheetName = "gotowe")
}
Progress: 1 on 1
bezpiecznik UWAGA! Najpierw należy przeprowadzić import do bazy, a następnie egzekwować poniższą część kodu
#w formularzu książkowym wyszukaj w polu uwag frazę '%akceptuje:NA%' i - jeśli takowa wystąpi - zastąp NA imieniem właściwego pracownika
#wiem, że to skasowaliśmy, ale doszedłem do wniosku, że jednak warto to sprawdzić
#automatyczny IOK dla rekordów bibliograficznych
nadpisanie_zapisow_IOK <- read.csv2(paste("C:/Users/",employee_name,"/Desktop/imp_",import_year,"_automatyczne_podmiotowe.csv",sep = ""), encoding = "UTF-8", header = TRUE, stringsAsFactors = FALSE)
Komunikaty ostrzegawcze:
1: Unknown or uninitialised column: 'drugi_autor'.
2: Unknown or uninitialised column: 'drugi_autor'.
3: Unknown or uninitialised column: 'drugi_autor'.
4: Unknown or uninitialised column: 'drugi_autor'.
5: Unknown or uninitialised column: 'drugi_autor'.
6: Unknown or uninitialised column: 'drugi_autor'.
nadpisanie_zapisow_IOK <- nadpisanie_zapisow_IOK %>%
mutate(rekord_BN = as.character(rekord_BN)) %>%
left_join(.,dbGetQuery(PBL,
"select z.za_zapis_id, z.za_status_imp, z.za_uwagi
from pbl_zapisy z
where za_uwagi like 'BN: %'
and z.za_url_bn is not null") %>% mutate(ZA_UWAGI = str_extract(ZA_UWAGI,"(?<=BN: )(.*?)(?=, import)")),by=c("rekord_BN"="ZA_UWAGI")) %>%
#filter(grepl(paste("^BN\\: ",import_year, sep = ""),rekord_BN)) %>%
rename(jest = ZA_STATUS_IMP) %>%
mutate(ID2 = NA) %>%
select(ZA_ZAPIS_ID,ID2,jest,powinno_byc)
write.xlsx(nadpisanie_zapisow_IOK, paste("C:/Users/",employee_name,"/Desktop/",import_year,"_nadpisanie_zapisow_IOK.xlsx",sep = ""),sheetName = "ZA_STATUS_IMP")
#bezpiecznik
#automatyczny IOK dla nowych twórców w kartotece powinien zostać przeprowadzony z poziomu importera
#automatycznie nadpisać rekordy bibliograficzne i kartoteczne przed kolejnym krokiem
#bezpiecznik
#jeśli podczas importu nie da się zaimportować rekordów - wprowadź je ręcznie w tym momencie
#kolumnę BN-URL należy nadpisać automatycznie
#docelowo przygotowujemy plik od razu na dysk, ale na razie xlsx do wgrania na dysk (brak funkcjonalności googlesheets4)
#po tym przygotować na dysku unikatowe linki
bn_ok <- chunk11
Komunikaty ostrzegawcze:
1: Unknown or uninitialised column: 'drugi_autor'.
2: Unknown or uninitialised column: 'drugi_autor'.
3: Unknown or uninitialised column: 'drugi_autor'.
4: Unknown or uninitialised column: 'drugi_autor'.
5: Unknown or uninitialised column: 'drugi_autor'.
6: Unknown or uninitialised column: 'drugi_autor'.
kolejnosc <- c("pracownik","ZA_ZAPIS_ID","typ_ksiazki","link","link_1","rok","status","blad_w_imporcie_tytulu","X100","X245","X650","X655","X246","X250","X260","X300","X380","X490","X500","X501","X546","X600","X700","X041","X080")
rocznik_pbl_po_imporcie <- dbGetQuery(PBL,
"select z.za_zapis_id, z.za_status_imp, z.za_uwagi
from pbl_zapisy z
where za_uwagi like 'BN: %'
and z.za_url_bn is not null") %>%
filter(grepl(paste("^BN\\: ",import_year, sep = ""),ZA_UWAGI)) %>%
mutate(ZA_UWAGI = str_extract(ZA_UWAGI,"(?<=BN: )(.*?)(?=, import)")) %>%
rename(status = ZA_STATUS_IMP) %>%
left_join(.,bn_ok %>% select(pracownik = redaktor_dzialu,typ_ksiazki = rodzaj_ksiazki,link = BN_URL, rok, X100, X245, X650, X655, X246, X250, X260, X300, X380, X490, X500, X501, X546, X600, X700, X041, X080,ZA_UWAGI) %>% mutate(link_1 = paste("=HYPERLINK(\"",link,"\";\"link do książki w BN\")",sep = ""), blad_w_imporcie_tytulu = FALSE),by="ZA_UWAGI") %>%
select(noquote(kolejnosc))
rocznik_pbl_po_imporcie$pracownik[rocznik_pbl_po_imporcie$status=="IOK"] <- "AUTOMAT"
write.xlsx(rocznik_pbl_po_imporcie, paste("C:/Users/",employee_name,"/Desktop/ks_BN_",import_year,"_listy_pracowników.xlsx",sep = ""),sheetName = "lista_ksiazek")
#utwórz nowy podfolder w folderze importu BN i prześlij listę na dysk, przygotuj widoki filtrów dla wszystkich osób i roześlij unikatowe linki
reczne_uzupelnienie <- c(2765929, 3649977, 2786810, 2605520, 3689766, 2823171, 2792556, 2766994, 2634324, 3592064, 3585580, 3613774, 2696408, 3847202, 1971301, 2691380, 3437017, 1174585, 1069065, 3582672, 2768841, 3794149, 2646124, 2654208, 3737322, 3671430, 2557743, 2281148, 3688912, 2319924, 2253422, 2981426, 2506316, 2670050, 2777795, 3689394, 1104406, 3690794, 2593203, 2603250, 3428978, 2647968, 3745919, 1913543, 2672858, 2657360, 3488205, 3689219, 2673127, 3742898, 1113842, 2838554, 2571213, 3080143, 2954229, 3070765, 1263048, 1112879, 3731300, 3643815, 2689671, 2618579, 2821534, 2638139, 2671339, 1834841, 2718281, 2597709, 2981319, 2684222, 2311826, 2752239, 3718134, 2792653, 2686901, 2642331, 3835809, 2617564, 3689166, 2866679, 2845987, 3688926, 3716499, 2636123, 2682447, 3578479, 3641144, 2718274, 3669958, 3718156, 3768850, 3613683, 3719337, 3260494, 2660087, 3689612, 2176545, 1683477, 3626352, "brak danych (CR)", "brak danych (CR)", "brak danych (CR)", "brak danych (CR)", 1000000028663, "brak danych (CR)", 3065133, "brak danych (CR)", "brak danych (CR)", 3092990, 2588979, 3010453, 2609754, 2431531, 2660815, 1187059, 2794040, 2786711)
Było 50 lub więcej ostrzeżeń (użyj 'warnings()' aby zobaczyć pierwsze 50)
pbl_bn_import_fix$id <- reczne_uzupelnienie
pbl_bn_import <- pbl_bn_import %>%
bind_rows(pbl_bn_import_fix %>% filter(id != "brak danych (CR)"))
pbl_bn_viaf_import <- data.frame(stringsAsFactors=FALSE)
x <- 1:length(pbl_bn_import$TW_TWORCA_ID)
for (i in x) {
progress(match(i,x), max.value = length(x))
name <- paste(str_replace_all(str_remove_all(paste(unlist(jsonlite::fromJSON(paste("https://data.bn.org.pl/api/authorities.json?id=",pbl_bn_import$id[i],sep = "")) %>% .$authorities %>% .$marc %>% .$fields %>% `[[`(1) %>% .$`100` %>% `[[`(3)),collapse = "|"),"\\|NA"),"(\\|)(\\(\\d+)"," \\2"),str_replace_all(str_remove_all(paste(unlist(jsonlite::fromJSON(paste("https://data.bn.org.pl/api/authorities.json?id=",pbl_bn_import$id[i],sep = "")) %>% .$authorities %>% .$marc %>% .$fields %>% `[[`(1) %>% .$`400` %>% `[[`(3)),collapse = "|"),"\\|NA"),"(\\|)(\\(\\.+)"," \\2"),sep = "|")
viaf <- str_remove_all(paste(unlist(jsonlite::fromJSON(paste("https://data.bn.org.pl/api/authorities.json?id=",pbl_bn_import$id[i],sep = "")) %>% .$authorities %>% .$marc %>% .$fields %>% `[[`(1) %>% .$`024` %>% .$subfields),collapse = "|"),"(\\|NA)|(\\|viaf)")
iteration <- data.frame(pbl_bn_import %>% select(1:3,5) %>% slice(i), name = name, viaf = viaf)
pbl_bn_viaf_import <- rbind(pbl_bn_viaf_import,iteration)
}
Progress: 1 on 2548 Progress: 2 on 2548 Progress: 3 on 2548 Progress: 4 on 2548 Progress: 5 on 2548 Progress: 6 on 2548 Progress: 7 on 2548 Progress: 8 on 2548 Progress: 9 on 2548 Progress: 10 on 2548 Progress: 11 on 2548 Progress: 12 on 2548 Progress: 13 on 2548 Progress: 14 on 2548 Progress: 15 on 2548 Progress: 16 on 2548 Progress: 17 on 2548 Progress: 18 on 2548 Progress: 19 on 2548 Progress: 20 on 2548 Progress: 21 on 2548 Progress: 22 on 2548 Progress: 23 on 2548 Progress: 24 on 2548 Progress: 25 on 2548 Progress: 26 on 2548 Progress: 27 on 2548 Progress: 28 on 2548 Progress: 29 on 2548 Progress: 30 on 2548 Progress: 31 on 2548 Progress: 32 on 2548 Progress: 33 on 2548 Progress: 34 on 2548 Progress: 35 on 2548 Progress: 36 on 2548 Progress: 37 on 2548 Progress: 38 on 2548 Progress: 39 on 2548 Progress: 40 on 2548 Progress: 41 on 2548 Progress: 42 on 2548 Progress: 43 on 2548 Progress: 44 on 2548 Progress: 45 on 2548 Progress: 46 on 2548 Progress: 47 on 2548 Progress: 48 on 2548 Progress: 49 on 2548 Progress: 50 on 2548 Progress: 51 on 2548 Progress: 52 on 2548 Progress: 53 on 2548 Progress: 54 on 2548 Progress: 55 on 2548 Progress: 56 on 2548 Progress: 57 on 2548 Progress: 58 on 2548 Progress: 59 on 2548 Progress: 60 on 2548 Progress: 61 on 2548 Progress: 62 on 2548 Progress: 63 on 2548 Progress: 64 on 2548 Progress: 65 on 2548 Progress: 66 on 2548 Progress: 67 on 2548 Progress: 68 on 2548 Progress: 69 on 2548 Progress: 70 on 2548 Progress: 71 on 2548 Progress: 72 on 2548 Progress: 73 on 2548 Progress: 74 on 2548 Progress: 75 on 2548 Progress: 76 on 2548 Progress: 77 on 2548 Progress: 78 on 2548 Progress: 79 on 2548 Progress: 80 on 2548 Progress: 81 on 2548 Progress: 82 on 2548 Progress: 83 on 2548 Progress: 84 on 2548 Progress: 85 on 2548 Progress: 86 on 2548 Progress: 87 on 2548 Progress: 88 on 2548 Progress: 89 on 2548 Progress: 90 on 2548 Progress: 91 on 2548 Progress: 92 on 2548 Progress: 93 on 2548 Progress: 94 on 2548 Progress: 95 on 2548 Progress: 96 on 2548 Progress: 97 on 2548 Progress: 98 on 2548 Progress: 99 on 2548 Progress: 100 on 2548 Progress: 101 on 2548 Progress: 102 on 2548 Progress: 103 on 2548 Progress: 104 on 2548 Progress: 105 on 2548 Progress: 106 on 2548 Progress: 107 on 2548 Progress: 108 on 2548 Progress: 109 on 2548 Progress: 110 on 2548 Progress: 111 on 2548 Progress: 112 on 2548 Progress: 113 on 2548 Progress: 114 on 2548 Progress: 115 on 2548 Progress: 116 on 2548 Progress: 117 on 2548 Progress: 118 on 2548 Progress: 119 on 2548 Progress: 120 on 2548 Progress: 121 on 2548 Progress: 122 on 2548 Progress: 123 on 2548 Progress: 124 on 2548 Progress: 125 on 2548 Progress: 126 on 2548 Progress: 127 on 2548 Progress: 128 on 2548 Progress: 129 on 2548 Progress: 130 on 2548 Progress: 131 on 2548 Progress: 132 on 2548 Progress: 133 on 2548 Progress: 134 on 2548 Progress: 135 on 2548 Progress: 136 on 2548 Progress: 137 on 2548 Progress: 138 on 2548 Progress: 139 on 2548 Progress: 140 on 2548 Progress: 141 on 2548 Progress: 142 on 2548 Progress: 143 on 2548 Progress: 144 on 2548 Progress: 145 on 2548 Progress: 146 on 2548 Progress: 147 on 2548 Progress: 148 on 2548 Progress: 149 on 2548 Progress: 150 on 2548 Progress: 151 on 2548 Progress: 152 on 2548 Progress: 153 on 2548 Progress: 154 on 2548 Progress: 155 on 2548 Progress: 156 on 2548 Progress: 157 on 2548 Progress: 158 on 2548 Progress: 159 on 2548 Progress: 160 on 2548 Progress: 161 on 2548 Progress: 162 on 2548 Progress: 163 on 2548 Progress: 164 on 2548 Progress: 165 on 2548 Progress: 166 on 2548 Progress: 167 on 2548 Progress: 168 on 2548 Progress: 169 on 2548 Progress: 170 on 2548 Progress: 171 on 2548 Progress: 172 on 2548 Progress: 173 on 2548 Progress: 174 on 2548 Progress: 175 on 2548 Progress: 176 on 2548 Progress: 177 on 2548 Progress: 178 on 2548 Progress: 179 on 2548 Progress: 180 on 2548 Progress: 181 on 2548 Progress: 182 on 2548 Progress: 183 on 2548 Progress: 184 on 2548 Progress: 185 on 2548 Progress: 186 on 2548 Progress: 187 on 2548 Progress: 188 on 2548 Progress: 189 on 2548 Progress: 190 on 2548 Progress: 191 on 2548 Progress: 192 on 2548 Progress: 193 on 2548 Progress: 194 on 2548 Progress: 195 on 2548 Progress: 196 on 2548 Progress: 197 on 2548 Progress: 198 on 2548 Progress: 199 on 2548 Progress: 200 on 2548 Progress: 201 on 2548 Progress: 202 on 2548 Progress: 203 on 2548 Progress: 204 on 2548 Progress: 205 on 2548 Progress: 206 on 2548 Progress: 207 on 2548 Progress: 208 on 2548 Progress: 209 on 2548 Progress: 210 on 2548 Progress: 211 on 2548 Progress: 212 on 2548 Progress: 213 on 2548 Progress: 214 on 2548 Progress: 215 on 2548 Progress: 216 on 2548 Progress: 217 on 2548 Progress: 218 on 2548 Progress: 219 on 2548 Progress: 220 on 2548 Progress: 221 on 2548 Progress: 222 on 2548 Progress: 223 on 2548 Progress: 224 on 2548 Progress: 225 on 2548 Progress: 226 on 2548 Progress: 227 on 2548 Progress: 228 on 2548 Progress: 229 on 2548 Progress: 230 on 2548 Progress: 231 on 2548 Progress: 232 on 2548 Progress: 233 on 2548 Progress: 234 on 2548 Progress: 235 on 2548 Progress: 236 on 2548 Progress: 237 on 2548 Progress: 238 on 2548 Progress: 239 on 2548 Progress: 240 on 2548 Progress: 241 on 2548 Progress: 242 on 2548 Progress: 243 on 2548 Progress: 244 on 2548 Progress: 245 on 2548 Progress: 246 on 2548 Progress: 247 on 2548 Progress: 248 on 2548 Progress: 249 on 2548 Progress: 250 on 2548 Progress: 251 on 2548 Progress: 252 on 2548 Progress: 253 on 2548 Progress: 254 on 2548 Progress: 255 on 2548 Progress: 256 on 2548 Progress: 257 on 2548 Progress: 258 on 2548 Progress: 259 on 2548 Progress: 260 on 2548 Progress: 261 on 2548 Progress: 262 on 2548 Progress: 263 on 2548 Progress: 264 on 2548 Progress: 265 on 2548 Progress: 266 on 2548 Progress: 267 on 2548 Progress: 268 on 2548 Progress: 269 on 2548 Progress: 270 on 2548 Progress: 271 on 2548 Progress: 272 on 2548 Progress: 273 on 2548 Progress: 274 on 2548 Progress: 275 on 2548 Progress: 276 on 2548 Progress: 277 on 2548 Progress: 278 on 2548 Progress: 279 on 2548 Progress: 280 on 2548 Progress: 281 on 2548 Progress: 282 on 2548 Progress: 283 on 2548 Progress: 284 on 2548 Progress: 285 on 2548 Progress: 286 on 2548 Progress: 287 on 2548 Progress: 288 on 2548 Progress: 289 on 2548 Progress: 290 on 2548 Progress: 291 on 2548 Progress: 292 on 2548 Progress: 293 on 2548 Progress: 294 on 2548 Progress: 295 on 2548 Progress: 296 on 2548 Progress: 297 on 2548 Progress: 298 on 2548 Progress: 299 on 2548 Progress: 300 on 2548 Progress: 301 on 2548 Progress: 302 on 2548 Progress: 303 on 2548 Progress: 304 on 2548 Progress: 305 on 2548 Progress: 306 on 2548 Progress: 307 on 2548 Progress: 308 on 2548 Progress: 309 on 2548 Progress: 310 on 2548 Progress: 311 on 2548 Progress: 312 on 2548 Progress: 313 on 2548 Progress: 314 on 2548 Progress: 315 on 2548 Progress: 316 on 2548 Progress: 317 on 2548 Progress: 318 on 2548 Progress: 319 on 2548 Progress: 320 on 2548 Progress: 321 on 2548 Progress: 322 on 2548 Progress: 323 on 2548 Progress: 324 on 2548 Progress: 325 on 2548 Progress: 326 on 2548 Progress: 327 on 2548 Progress: 328 on 2548 Progress: 329 on 2548 Progress: 330 on 2548 Progress: 331 on 2548 Progress: 332 on 2548 Progress: 333 on 2548 Progress: 334 on 2548 Progress: 335 on 2548 Progress: 336 on 2548 Progress: 337 on 2548 Progress: 338 on 2548 Progress: 339 on 2548 Progress: 340 on 2548 Progress: 341 on 2548 Progress: 342 on 2548 Progress: 343 on 2548 Progress: 344 on 2548 Progress: 345 on 2548 Progress: 346 on 2548 Progress: 347 on 2548 Progress: 348 on 2548 Progress: 349 on 2548 Progress: 350 on 2548 Progress: 351 on 2548 Progress: 352 on 2548 Progress: 353 on 2548 Progress: 354 on 2548 Progress: 355 on 2548 Progress: 356 on 2548 Progress: 357 on 2548 Progress: 358 on 2548 Progress: 359 on 2548 Progress: 360 on 2548 Progress: 361 on 2548 Progress: 362 on 2548 Progress: 363 on 2548 Progress: 364 on 2548 Progress: 365 on 2548 Progress: 366 on 2548 Progress: 367 on 2548 Progress: 368 on 2548 Progress: 369 on 2548 Progress: 370 on 2548 Progress: 371 on 2548 Progress: 372 on 2548 Progress: 373 on 2548 Progress: 374 on 2548 Progress: 375 on 2548 Progress: 376 on 2548 Progress: 377 on 2548 Progress: 378 on 2548 Progress: 379 on 2548 Progress: 380 on 2548 Progress: 381 on 2548 Progress: 382 on 2548 Progress: 383 on 2548 Progress: 384 on 2548 Progress: 385 on 2548 Progress: 386 on 2548 Progress: 387 on 2548 Progress: 388 on 2548 Progress: 389 on 2548 Progress: 390 on 2548 Progress: 391 on 2548 Progress: 392 on 2548 Progress: 393 on 2548 Progress: 394 on 2548 Progress: 395 on 2548 Progress: 396 on 2548 Progress: 397 on 2548 Progress: 398 on 2548 Progress: 399 on 2548 Progress: 400 on 2548 Progress: 401 on 2548 Progress: 402 on 2548 Progress: 403 on 2548 Progress: 404 on 2548 Progress: 405 on 2548 Progress: 406 on 2548 Progress: 407 on 2548 Progress: 408 on 2548 Progress: 409 on 2548 Progress: 410 on 2548 Progress: 411 on 2548 Progress: 412 on 2548 Progress: 413 on 2548 Progress: 414 on 2548 Progress: 415 on 2548 Progress: 416 on 2548 Progress: 417 on 2548 Progress: 418 on 2548 Progress: 419 on 2548 Progress: 420 on 2548 Progress: 421 on 2548 Progress: 422 on 2548 Progress: 423 on 2548 Progress: 424 on 2548 Progress: 425 on 2548 Progress: 426 on 2548 Progress: 427 on 2548 Progress: 428 on 2548 Progress: 429 on 2548 Progress: 430 on 2548 Progress: 431 on 2548 Progress: 432 on 2548 Progress: 433 on 2548 Progress: 434 on 2548 Progress: 435 on 2548 Progress: 436 on 2548 Progress: 437 on 2548 Progress: 438 on 2548 Progress: 439 on 2548 Progress: 440 on 2548 Progress: 441 on 2548 Progress: 442 on 2548 Progress: 443 on 2548 Progress: 444 on 2548 Progress: 445 on 2548 Progress: 446 on 2548 Progress: 447 on 2548 Progress: 448 on 2548 Progress: 449 on 2548 Progress: 450 on 2548 Progress: 451 on 2548 Progress: 452 on 2548 Progress: 453 on 2548 Progress: 454 on 2548 Progress: 455 on 2548 Progress: 456 on 2548 Progress: 457 on 2548 Progress: 458 on 2548 Progress: 459 on 2548 Progress: 460 on 2548 Progress: 461 on 2548 Progress: 462 on 2548 Progress: 463 on 2548 Progress: 464 on 2548 Progress: 465 on 2548 Progress: 466 on 2548 Progress: 467 on 2548 Progress: 468 on 2548 Progress: 469 on 2548 Progress: 470 on 2548 Progress: 471 on 2548 Progress: 472 on 2548 Progress: 473 on 2548 Progress: 474 on 2548 Progress: 475 on 2548 Progress: 476 on 2548 Progress: 477 on 2548 Progress: 478 on 2548 Progress: 479 on 2548 Progress: 480 on 2548 Progress: 481 on 2548 Progress: 482 on 2548 Progress: 483 on 2548 Progress: 484 on 2548 Progress: 485 on 2548 Progress: 486 on 2548 Progress: 487 on 2548 Progress: 488 on 2548 Progress: 489 on 2548 Progress: 490 on 2548 Progress: 491 on 2548 Progress: 492 on 2548 Progress: 493 on 2548 Progress: 494 on 2548 Progress: 495 on 2548 Progress: 496 on 2548 Progress: 497 on 2548 Progress: 498 on 2548 Progress: 499 on 2548 Progress: 500 on 2548 Progress: 501 on 2548 Progress: 502 on 2548 Progress: 503 on 2548 Progress: 504 on 2548 Progress: 505 on 2548 Progress: 506 on 2548 Progress: 507 on 2548 Progress: 508 on 2548 Progress: 509 on 2548 Progress: 510 on 2548 Progress: 511 on 2548 Progress: 512 on 2548 Progress: 513 on 2548 Progress: 514 on 2548 Progress: 515 on 2548 Progress: 516 on 2548 Progress: 517 on 2548 Progress: 518 on 2548 Progress: 519 on 2548 Progress: 520 on 2548 Progress: 521 on 2548 Progress: 522 on 2548 Progress: 523 on 2548 Progress: 524 on 2548 Progress: 525 on 2548 Progress: 526 on 2548 Progress: 527 on 2548 Progress: 528 on 2548 Progress: 529 on 2548 Progress: 530 on 2548 Progress: 531 on 2548 Progress: 532 on 2548 Progress: 533 on 2548 Progress: 534 on 2548 Progress: 535 on 2548 Progress: 536 on 2548 Progress: 537 on 2548 Progress: 538 on 2548 Progress: 539 on 2548 Progress: 540 on 2548 Progress: 541 on 2548 Progress: 542 on 2548 Progress: 543 on 2548 Progress: 544 on 2548 Progress: 545 on 2548 Progress: 546 on 2548 Progress: 547 on 2548 Progress: 548 on 2548 Progress: 549 on 2548 Progress: 550 on 2548 Progress: 551 on 2548 Progress: 552 on 2548 Progress: 553 on 2548 Progress: 554 on 2548 Progress: 555 on 2548 Progress: 556 on 2548 Progress: 557 on 2548 Progress: 558 on 2548 Progress: 559 on 2548 Progress: 560 on 2548 Progress: 561 on 2548 Progress: 562 on 2548 Progress: 563 on 2548 Progress: 564 on 2548 Progress: 565 on 2548 Progress: 566 on 2548 Progress: 567 on 2548 Progress: 568 on 2548 Progress: 569 on 2548 Progress: 570 on 2548 Progress: 571 on 2548 Progress: 572 on 2548 Progress: 573 on 2548 Progress: 574 on 2548 Progress: 575 on 2548 Progress: 576 on 2548 Progress: 577 on 2548 Progress: 578 on 2548 Progress: 579 on 2548 Progress: 580 on 2548 Progress: 581 on 2548 Progress: 582 on 2548 Progress: 583 on 2548 Progress: 584 on 2548 Progress: 585 on 2548 Progress: 586 on 2548 Progress: 587 on 2548 Progress: 588 on 2548 Progress: 589 on 2548 Progress: 590 on 2548 Progress: 591 on 2548 Progress: 592 on 2548 Progress: 593 on 2548 Progress: 594 on 2548 Progress: 595 on 2548 Progress: 596 on 2548 Progress: 597 on 2548 Progress: 598 on 2548 Progress: 599 on 2548 Progress: 600 on 2548 Progress: 601 on 2548 Progress: 602 on 2548 Progress: 603 on 2548 Progress: 604 on 2548 Progress: 605 on 2548 Progress: 606 on 2548 Progress: 607 on 2548 Progress: 608 on 2548 Progress: 609 on 2548 Progress: 610 on 2548 Progress: 611 on 2548 Progress: 612 on 2548 Progress: 613 on 2548 Progress: 614 on 2548 Progress: 615 on 2548 Progress: 616 on 2548 Progress: 617 on 2548 Progress: 618 on 2548 Progress: 619 on 2548 Progress: 620 on 2548 Progress: 621 on 2548 Progress: 622 on 2548 Progress: 623 on 2548 Progress: 624 on 2548 Progress: 625 on 2548 Progress: 626 on 2548 Progress: 627 on 2548 Progress: 628 on 2548 Progress: 629 on 2548 Progress: 630 on 2548 Progress: 631 on 2548 Progress: 632 on 2548 Progress: 633 on 2548 Progress: 634 on 2548 Progress: 635 on 2548 Progress: 636 on 2548 Progress: 637 on 2548 Progress: 638 on 2548 Progress: 639 on 2548 Progress: 640 on 2548 Progress: 641 on 2548 Progress: 642 on 2548 Progress: 643 on 2548 Progress: 644 on 2548 Progress: 645 on 2548 Progress: 646 on 2548 Progress: 647 on 2548 Progress: 648 on 2548 Progress: 649 on 2548 Progress: 650 on 2548 Progress: 651 on 2548 Progress: 652 on 2548 Progress: 653 on 2548 Progress: 654 on 2548 Progress: 655 on 2548 Progress: 656 on 2548 Progress: 657 on 2548 Progress: 658 on 2548 Progress: 659 on 2548 Progress: 660 on 2548 Progress: 661 on 2548 Progress: 662 on 2548 Progress: 663 on 2548 Progress: 664 on 2548 Progress: 665 on 2548 Progress: 666 on 2548 Progress: 667 on 2548 Progress: 668 on 2548 Progress: 669 on 2548 Progress: 670 on 2548 Progress: 671 on 2548 Progress: 672 on 2548 Progress: 673 on 2548 Progress: 674 on 2548 Progress: 675 on 2548 Progress: 676 on 2548 Progress: 677 on 2548 Progress: 678 on 2548 Progress: 679 on 2548 Progress: 680 on 2548 Progress: 681 on 2548 Progress: 682 on 2548 Progress: 683 on 2548 Progress: 684 on 2548 Progress: 685 on 2548 Progress: 686 on 2548 Progress: 687 on 2548 Progress: 688 on 2548 Progress: 689 on 2548 Progress: 690 on 2548 Progress: 691 on 2548 Progress: 692 on 2548 Progress: 693 on 2548 Progress: 694 on 2548 Progress: 695 on 2548 Progress: 696 on 2548 Progress: 697 on 2548 Progress: 698 on 2548 Progress: 699 on 2548 Progress: 700 on 2548 Progress: 701 on 2548 Progress: 702 on 2548 Progress: 703 on 2548 Progress: 704 on 2548 Progress: 705 on 2548 Progress: 706 on 2548 Progress: 707 on 2548 Progress: 708 on 2548 Progress: 709 on 2548 Progress: 710 on 2548 Progress: 711 on 2548 Progress: 712 on 2548 Progress: 713 on 2548 Progress: 714 on 2548 Progress: 715 on 2548 Progress: 716 on 2548 Progress: 717 on 2548 Progress: 718 on 2548 Progress: 719 on 2548 Progress: 720 on 2548 Progress: 721 on 2548 Progress: 722 on 2548 Progress: 723 on 2548 Progress: 724 on 2548 Progress: 725 on 2548 Progress: 726 on 2548 Progress: 727 on 2548 Progress: 728 on 2548 Progress: 729 on 2548 Progress: 730 on 2548 Progress: 731 on 2548 Progress: 732 on 2548 Progress: 733 on 2548 Progress: 734 on 2548 Progress: 735 on 2548 Progress: 736 on 2548 Progress: 737 on 2548 Progress: 738 on 2548 Progress: 739 on 2548 Progress: 740 on 2548 Progress: 741 on 2548 Progress: 742 on 2548 Progress: 743 on 2548 Progress: 744 on 2548 Progress: 745 on 2548 Progress: 746 on 2548 Progress: 747 on 2548 Progress: 748 on 2548 Progress: 749 on 2548 Progress: 750 on 2548 Progress: 751 on 2548 Progress: 752 on 2548 Progress: 753 on 2548 Progress: 754 on 2548 Progress: 755 on 2548 Progress: 756 on 2548 Progress: 757 on 2548 Progress: 758 on 2548 Progress: 759 on 2548 Progress: 760 on 2548 Progress: 761 on 2548 Progress: 762 on 2548 Progress: 763 on 2548 Progress: 764 on 2548 Progress: 765 on 2548 Progress: 766 on 2548 Progress: 767 on 2548 Progress: 768 on 2548 Progress: 769 on 2548 Progress: 770 on 2548 Progress: 771 on 2548 Progress: 772 on 2548 Progress: 773 on 2548 Progress: 774 on 2548 Progress: 775 on 2548 Progress: 776 on 2548 Progress: 777 on 2548 Progress: 778 on 2548 Progress: 779 on 2548 Progress: 780 on 2548 Progress: 781 on 2548 Progress: 782 on 2548 Progress: 783 on 2548 Progress: 784 on 2548 Progress: 785 on 2548 Progress: 786 on 2548 Progress: 787 on 2548 Progress: 788 on 2548 Progress: 789 on 2548 Progress: 790 on 2548 Progress: 791 on 2548 Progress: 792 on 2548 Progress: 793 on 2548 Progress: 794 on 2548 Progress: 795 on 2548 Progress: 796 on 2548 Progress: 797 on 2548 Progress: 798 on 2548 Progress: 799 on 2548 Progress: 800 on 2548 Progress: 801 on 2548 Progress: 802 on 2548 Progress: 803 on 2548 Progress: 804 on 2548 Progress: 805 on 2548 Progress: 806 on 2548 Progress: 807 on 2548 Progress: 808 on 2548 Progress: 809 on 2548 Progress: 810 on 2548 Progress: 811 on 2548 Progress: 812 on 2548 Progress: 813 on 2548 Progress: 814 on 2548 Progress: 815 on 2548 Progress: 816 on 2548 Progress: 817 on 2548 Progress: 818 on 2548 Progress: 819 on 2548 Progress: 820 on 2548 Progress: 821 on 2548 Progress: 822 on 2548 Progress: 823 on 2548 Progress: 824 on 2548 Progress: 825 on 2548 Progress: 826 on 2548 Progress: 827 on 2548 Progress: 828 on 2548 Progress: 829 on 2548 Progress: 830 on 2548 Progress: 831 on 2548 Progress: 832 on 2548 Progress: 833 on 2548 Progress: 834 on 2548 Progress: 835 on 2548 Progress: 836 on 2548 Progress: 837 on 2548 Progress: 838 on 2548 Progress: 839 on 2548 Progress: 840 on 2548 Progress: 841 on 2548 Progress: 842 on 2548 Progress: 843 on 2548 Progress: 844 on 2548 Progress: 845 on 2548 Progress: 846 on 2548 Progress: 847 on 2548 Progress: 848 on 2548 Progress: 849 on 2548 Progress: 850 on 2548 Progress: 851 on 2548 Progress: 852 on 2548 Progress: 853 on 2548 Progress: 854 on 2548 Progress: 855 on 2548 Progress: 856 on 2548 Progress: 857 on 2548 Progress: 858 on 2548 Progress: 859 on 2548 Progress: 860 on 2548 Progress: 861 on 2548 Progress: 862 on 2548 Progress: 863 on 2548 Progress: 864 on 2548 Progress: 865 on 2548 Progress: 866 on 2548 Progress: 867 on 2548 Progress: 868 on 2548 Progress: 869 on 2548 Progress: 870 on 2548 Progress: 871 on 2548 Progress: 872 on 2548 Progress: 873 on 2548 Progress: 874 on 2548 Progress: 875 on 2548 Progress: 876 on 2548 Progress: 877 on 2548 Progress: 878 on 2548 Progress: 879 on 2548 Progress: 880 on 2548 Progress: 881 on 2548 Progress: 882 on 2548 Progress: 883 on 2548 Progress: 884 on 2548 Progress: 885 on 2548 Progress: 886 on 2548 Progress: 887 on 2548 Progress: 888 on 2548 Progress: 889 on 2548 Progress: 890 on 2548 Progress: 891 on 2548 Progress: 892 on 2548 Progress: 893 on 2548 Progress: 894 on 2548 Progress: 895 on 2548 Progress: 896 on 2548 Progress: 897 on 2548 Progress: 898 on 2548 Progress: 899 on 2548 Progress: 900 on 2548 Progress: 901 on 2548 Progress: 902 on 2548 Progress: 903 on 2548 Progress: 904 on 2548 Progress: 905 on 2548 Progress: 906 on 2548 Progress: 907 on 2548 Progress: 908 on 2548 Progress: 909 on 2548 Progress: 910 on 2548 Progress: 911 on 2548 Progress: 912 on 2548 Progress: 913 on 2548 Progress: 914 on 2548 Progress: 915 on 2548 Progress: 916 on 2548 Progress: 917 on 2548 Progress: 918 on 2548 Progress: 919 on 2548 Progress: 920 on 2548 Progress: 921 on 2548 Progress: 922 on 2548 Progress: 923 on 2548 Progress: 924 on 2548 Progress: 925 on 2548 Progress: 926 on 2548 Progress: 927 on 2548 Progress: 928 on 2548 Progress: 929 on 2548 Progress: 930 on 2548 Progress: 931 on 2548 Progress: 932 on 2548 Progress: 933 on 2548 Progress: 934 on 2548 Progress: 935 on 2548 Progress: 936 on 2548 Progress: 937 on 2548 Progress: 938 on 2548 Progress: 939 on 2548 Progress: 940 on 2548 Progress: 941 on 2548 Progress: 942 on 2548 Progress: 943 on 2548 Progress: 944 on 2548 Progress: 945 on 2548 Progress: 946 on 2548 Progress: 947 on 2548 Progress: 948 on 2548 Progress: 949 on 2548 Progress: 950 on 2548 Progress: 951 on 2548 Progress: 952 on 2548 Progress: 953 on 2548 Progress: 954 on 2548 Progress: 955 on 2548 Progress: 956 on 2548 Progress: 957 on 2548 Progress: 958 on 2548 Progress: 959 on 2548 Progress: 960 on 2548 Progress: 961 on 2548 Progress: 962 on 2548 Progress: 963 on 2548 Progress: 964 on 2548 Progress: 965 on 2548 Progress: 966 on 2548 Progress: 967 on 2548 Progress: 968 on 2548 Progress: 969 on 2548 Progress: 970 on 2548 Progress: 971 on 2548 Progress: 972 on 2548 Progress: 973 on 2548 Progress: 974 on 2548 Progress: 975 on 2548 Progress: 976 on 2548 Progress: 977 on 2548 Progress: 978 on 2548 Progress: 979 on 2548 Progress: 980 on 2548 Progress: 981 on 2548 Progress: 982 on 2548 Progress: 983 on 2548 Progress: 984 on 2548 Progress: 985 on 2548 Progress: 986 on 2548 Progress: 987 on 2548 Progress: 988 on 2548 Progress: 989 on 2548 Progress: 990 on 2548 Progress: 991 on 2548 Progress: 992 on 2548 Progress: 993 on 2548 Progress: 994 on 2548 Progress: 995 on 2548 Progress: 996 on 2548 Progress: 997 on 2548 Progress: 998 on 2548 Progress: 999 on 2548 Progress: 1000 on 2548 Progress: 1001 on 2548 Progress: 1002 on 2548 Progress: 1003 on 2548 Progress: 1004 on 2548 Progress: 1005 on 2548 Progress: 1006 on 2548 Progress: 1007 on 2548 Progress: 1008 on 2548 Progress: 1009 on 2548 Progress: 1010 on 2548 Progress: 1011 on 2548 Progress: 1012 on 2548 Progress: 1013 on 2548 Progress: 1014 on 2548 Progress: 1015 on 2548 Progress: 1016 on 2548 Progress: 1017 on 2548 Progress: 1018 on 2548 Progress: 1019 on 2548 Progress: 1020 on 2548 Progress: 1021 on 2548 Progress: 1022 on 2548 Progress: 1023 on 2548 Progress: 1024 on 2548 Progress: 1025 on 2548 Progress: 1026 on 2548 Progress: 1027 on 2548 Progress: 1028 on 2548 Progress: 1029 on 2548 Progress: 1030 on 2548 Progress: 1031 on 2548 Progress: 1032 on 2548 Progress: 1033 on 2548 Progress: 1034 on 2548 Progress: 1035 on 2548 Progress: 1036 on 2548 Progress: 1037 on 2548 Progress: 1038 on 2548 Progress: 1039 on 2548 Progress: 1040 on 2548 Progress: 1041 on 2548 Progress: 1042 on 2548 Progress: 1043 on 2548 Progress: 1044 on 2548 Progress: 1045 on 2548 Progress: 1046 on 2548 Progress: 1047 on 2548 Progress: 1048 on 2548 Progress: 1049 on 2548 Progress: 1050 on 2548 Progress: 1051 on 2548 Progress: 1052 on 2548 Progress: 1053 on 2548 Progress: 1054 on 2548 Progress: 1055 on 2548 Progress: 1056 on 2548 Progress: 1057 on 2548 Progress: 1058 on 2548 Progress: 1059 on 2548 Progress: 1060 on 2548 Progress: 1061 on 2548 Progress: 1062 on 2548 Progress: 1063 on 2548 Progress: 1064 on 2548 Progress: 1065 on 2548 Progress: 1066 on 2548 Progress: 1067 on 2548 Progress: 1068 on 2548 Progress: 1069 on 2548 Progress: 1070 on 2548 Progress: 1071 on 2548 Progress: 1072 on 2548 Progress: 1073 on 2548 Progress: 1074 on 2548 Progress: 1075 on 2548 Progress: 1076 on 2548 Progress: 1077 on 2548 Progress: 1078 on 2548 Progress: 1079 on 2548 Progress: 1080 on 2548 Progress: 1081 on 2548 Progress: 1082 on 2548 Progress: 1083 on 2548 Progress: 1084 on 2548 Progress: 1085 on 2548 Progress: 1086 on 2548 Progress: 1087 on 2548 Progress: 1088 on 2548 Progress: 1089 on 2548 Progress: 1090 on 2548 Progress: 1091 on 2548 Progress: 1092 on 2548 Progress: 1093 on 2548 Progress: 1094 on 2548 Progress: 1095 on 2548 Progress: 1096 on 2548 Progress: 1097 on 2548 Progress: 1098 on 2548 Progress: 1099 on 2548 Progress: 1100 on 2548 Progress: 1101 on 2548 Progress: 1102 on 2548 Progress: 1103 on 2548 Progress: 1104 on 2548 Progress: 1105 on 2548 Progress: 1106 on 2548 Progress: 1107 on 2548 Progress: 1108 on 2548 Progress: 1109 on 2548 Progress: 1110 on 2548 Progress: 1111 on 2548 Progress: 1112 on 2548 Progress: 1113 on 2548 Progress: 1114 on 2548 Progress: 1115 on 2548 Progress: 1116 on 2548 Progress: 1117 on 2548 Progress: 1118 on 2548 Progress: 1119 on 2548 Progress: 1120 on 2548 Progress: 1121 on 2548 Progress: 1122 on 2548 Progress: 1123 on 2548 Progress: 1124 on 2548 Progress: 1125 on 2548 Progress: 1126 on 2548 Progress: 1127 on 2548 Progress: 1128 on 2548 Progress: 1129 on 2548 Progress: 1130 on 2548 Progress: 1131 on 2548 Progress: 1132 on 2548 Progress: 1133 on 2548 Progress: 1134 on 2548 Progress: 1135 on 2548 Progress: 1136 on 2548 Progress: 1137 on 2548 Progress: 1138 on 2548 Progress: 1139 on 2548 Progress: 1140 on 2548 Progress: 1141 on 2548 Progress: 1142 on 2548 Progress: 1143 on 2548 Progress: 1144 on 2548 Progress: 1145 on 2548 Progress: 1146 on 2548 Progress: 1147 on 2548 Progress: 1148 on 2548 Progress: 1149 on 2548 Progress: 1150 on 2548 Progress: 1151 on 2548 Progress: 1152 on 2548 Progress: 1153 on 2548 Progress: 1154 on 2548 Progress: 1155 on 2548 Progress: 1156 on 2548 Progress: 1157 on 2548 Progress: 1158 on 2548 Progress: 1159 on 2548 Progress: 1160 on 2548 Progress: 1161 on 2548 Progress: 1162 on 2548 Progress: 1163 on 2548 Progress: 1164 on 2548 Progress: 1165 on 2548 Progress: 1166 on 2548 Progress: 1167 on 2548 Progress: 1168 on 2548 Progress: 1169 on 2548 Progress: 1170 on 2548 Progress: 1171 on 2548 Progress: 1172 on 2548 Progress: 1173 on 2548 Progress: 1174 on 2548 Progress: 1175 on 2548 Progress: 1176 on 2548 Progress: 1177 on 2548 Progress: 1178 on 2548 Progress: 1179 on 2548 Progress: 1180 on 2548 Progress: 1181 on 2548 Progress: 1182 on 2548 Progress: 1183 on 2548 Progress: 1184 on 2548 Progress: 1185 on 2548 Progress: 1186 on 2548 Progress: 1187 on 2548 Progress: 1188 on 2548 Progress: 1189 on 2548 Progress: 1190 on 2548 Progress: 1191 on 2548 Progress: 1192 on 2548 Progress: 1193 on 2548 Progress: 1194 on 2548 Progress: 1195 on 2548 Progress: 1196 on 2548 Progress: 1197 on 2548 Progress: 1198 on 2548 Progress: 1199 on 2548 Progress: 1200 on 2548 Progress: 1201 on 2548 Progress: 1202 on 2548 Progress: 1203 on 2548 Progress: 1204 on 2548 Progress: 1205 on 2548 Progress: 1206 on 2548 Progress: 1207 on 2548 Progress: 1208 on 2548 Progress: 1209 on 2548 Progress: 1210 on 2548 Progress: 1211 on 2548 Progress: 1212 on 2548 Progress: 1213 on 2548 Progress: 1214 on 2548 Progress: 1215 on 2548 Progress: 1216 on 2548 Progress: 1217 on 2548 Progress: 1218 on 2548 Progress: 1219 on 2548 Progress: 1220 on 2548 Progress: 1221 on 2548 Progress: 1222 on 2548 Progress: 1223 on 2548 Progress: 1224 on 2548 Progress: 1225 on 2548 Progress: 1226 on 2548 Progress: 1227 on 2548 Progress: 1228 on 2548 Progress: 1229 on 2548 Progress: 1230 on 2548 Progress: 1231 on 2548 Progress: 1232 on 2548 Progress: 1233 on 2548 Progress: 1234 on 2548 Progress: 1235 on 2548 Progress: 1236 on 2548 Progress: 1237 on 2548 Progress: 1238 on 2548 Progress: 1239 on 2548 Progress: 1240 on 2548 Progress: 1241 on 2548 Progress: 1242 on 2548 Progress: 1243 on 2548 Progress: 1244 on 2548 Progress: 1245 on 2548 Progress: 1246 on 2548 Progress: 1247 on 2548 Progress: 1248 on 2548 Progress: 1249 on 2548 Progress: 1250 on 2548 Progress: 1251 on 2548 Progress: 1252 on 2548 Progress: 1253 on 2548 Progress: 1254 on 2548 Progress: 1255 on 2548 Progress: 1256 on 2548 Progress: 1257 on 2548 Progress: 1258 on 2548 Progress: 1259 on 2548 Progress: 1260 on 2548 Progress: 1261 on 2548 Progress: 1262 on 2548 Progress: 1263 on 2548 Progress: 1264 on 2548 Progress: 1265 on 2548 Progress: 1266 on 2548 Progress: 1267 on 2548 Progress: 1268 on 2548 Progress: 1269 on 2548 Progress: 1270 on 2548 Progress: 1271 on 2548 Progress: 1272 on 2548 Progress: 1273 on 2548 Progress: 1274 on 2548 Progress: 1275 on 2548 Progress: 1276 on 2548 Progress: 1277 on 2548 Progress: 1278 on 2548 Progress: 1279 on 2548 Progress: 1280 on 2548 Progress: 1281 on 2548 Progress: 1282 on 2548 Progress: 1283 on 2548 Progress: 1284 on 2548 Progress: 1285 on 2548 Progress: 1286 on 2548 Progress: 1287 on 2548 Progress: 1288 on 2548 Progress: 1289 on 2548 Progress: 1290 on 2548 Progress: 1291 on 2548 Progress: 1292 on 2548 Progress: 1293 on 2548 Progress: 1294 on 2548 Progress: 1295 on 2548 Progress: 1296 on 2548 Progress: 1297 on 2548 Progress: 1298 on 2548 Progress: 1299 on 2548 Progress: 1300 on 2548 Progress: 1301 on 2548 Progress: 1302 on 2548 Progress: 1303 on 2548 Progress: 1304 on 2548 Progress: 1305 on 2548 Progress: 1306 on 2548 Progress: 1307 on 2548 Progress: 1308 on 2548 Progress: 1309 on 2548 Progress: 1310 on 2548 Progress: 1311 on 2548 Progress: 1312 on 2548 Progress: 1313 on 2548 Progress: 1314 on 2548 Progress: 1315 on 2548 Progress: 1316 on 2548 Progress: 1317 on 2548 Progress: 1318 on 2548 Progress: 1319 on 2548 Progress: 1320 on 2548 Progress: 1321 on 2548 Progress: 1322 on 2548 Progress: 1323 on 2548 Progress: 1324 on 2548 Progress: 1325 on 2548 Progress: 1326 on 2548 Progress: 1327 on 2548 Progress: 1328 on 2548 Progress: 1329 on 2548 Progress: 1330 on 2548 Progress: 1331 on 2548 Progress: 1332 on 2548 Progress: 1333 on 2548 Progress: 1334 on 2548 Progress: 1335 on 2548 Progress: 1336 on 2548 Progress: 1337 on 2548 Progress: 1338 on 2548 Progress: 1339 on 2548 Progress: 1340 on 2548 Progress: 1341 on 2548 Progress: 1342 on 2548 Progress: 1343 on 2548 Progress: 1344 on 2548 Progress: 1345 on 2548 Progress: 1346 on 2548 Progress: 1347 on 2548 Progress: 1348 on 2548 Progress: 1349 on 2548 Progress: 1350 on 2548 Progress: 1351 on 2548 Progress: 1352 on 2548 Progress: 1353 on 2548 Progress: 1354 on 2548 Progress: 1355 on 2548 Progress: 1356 on 2548 Progress: 1357 on 2548 Progress: 1358 on 2548 Progress: 1359 on 2548 Progress: 1360 on 2548 Progress: 1361 on 2548 Progress: 1362 on 2548 Progress: 1363 on 2548 Progress: 1364 on 2548 Progress: 1365 on 2548 Progress: 1366 on 2548 Progress: 1367 on 2548 Progress: 1368 on 2548 Progress: 1369 on 2548 Progress: 1370 on 2548 Progress: 1371 on 2548 Progress: 1372 on 2548 Progress: 1373 on 2548 Progress: 1374 on 2548 Progress: 1375 on 2548 Progress: 1376 on 2548 Progress: 1377 on 2548 Progress: 1378 on 2548 Progress: 1379 on 2548 Progress: 1380 on 2548 Progress: 1381 on 2548 Progress: 1382 on 2548 Progress: 1383 on 2548 Progress: 1384 on 2548 Progress: 1385 on 2548 Progress: 1386 on 2548 Progress: 1387 on 2548 Progress: 1388 on 2548 Progress: 1389 on 2548 Progress: 1390 on 2548 Progress: 1391 on 2548 Progress: 1392 on 2548 Progress: 1393 on 2548 Progress: 1394 on 2548 Progress: 1395 on 2548 Progress: 1396 on 2548 Progress: 1397 on 2548 Progress: 1398 on 2548 Progress: 1399 on 2548 Progress: 1400 on 2548 Progress: 1401 on 2548 Progress: 1402 on 2548 Progress: 1403 on 2548 Progress: 1404 on 2548 Progress: 1405 on 2548 Progress: 1406 on 2548 Progress: 1407 on 2548 Progress: 1408 on 2548 Progress: 1409 on 2548 Progress: 1410 on 2548 Progress: 1411 on 2548 Progress: 1412 on 2548 Progress: 1413 on 2548 Progress: 1414 on 2548 Progress: 1415 on 2548 Progress: 1416 on 2548 Progress: 1417 on 2548 Progress: 1418 on 2548 Progress: 1419 on 2548 Progress: 1420 on 2548 Progress: 1421 on 2548 Progress: 1422 on 2548 Progress: 1423 on 2548 Progress: 1424 on 2548 Progress: 1425 on 2548 Progress: 1426 on 2548 Progress: 1427 on 2548 Progress: 1428 on 2548 Progress: 1429 on 2548 Progress: 1430 on 2548 Progress: 1431 on 2548 Progress: 1432 on 2548 Progress: 1433 on 2548 Progress: 1434 on 2548 Progress: 1435 on 2548 Progress: 1436 on 2548 Progress: 1437 on 2548 Progress: 1438 on 2548 Progress: 1439 on 2548 Progress: 1440 on 2548 Progress: 1441 on 2548 Progress: 1442 on 2548 Progress: 1443 on 2548 Progress: 1444 on 2548 Progress: 1445 on 2548 Progress: 1446 on 2548 Progress: 1447 on 2548 Progress: 1448 on 2548 Progress: 1449 on 2548 Progress: 1450 on 2548 Progress: 1451 on 2548 Progress: 1452 on 2548 Progress: 1453 on 2548 Progress: 1454 on 2548 Progress: 1455 on 2548 Progress: 1456 on 2548 Progress: 1457 on 2548 Progress: 1458 on 2548 Progress: 1459 on 2548 Progress: 1460 on 2548 Progress: 1461 on 2548 Progress: 1462 on 2548 Progress: 1463 on 2548 Progress: 1464 on 2548 Progress: 1465 on 2548 Progress: 1466 on 2548 Progress: 1467 on 2548 Progress: 1468 on 2548 Progress: 1469 on 2548 Progress: 1470 on 2548 Progress: 1471 on 2548 Progress: 1472 on 2548 Progress: 1473 on 2548 Progress: 1474 on 2548 Progress: 1475 on 2548 Progress: 1476 on 2548 Progress: 1477 on 2548 Progress: 1478 on 2548 Progress: 1479 on 2548 Progress: 1480 on 2548 Progress: 1481 on 2548 Progress: 1482 on 2548 Progress: 1483 on 2548 Progress: 1484 on 2548 Progress: 1485 on 2548 Progress: 1486 on 2548 Progress: 1487 on 2548 Progress: 1488 on 2548 Progress: 1489 on 2548 Progress: 1490 on 2548 Progress: 1491 on 2548 Progress: 1492 on 2548 Progress: 1493 on 2548 Progress: 1494 on 2548 Progress: 1495 on 2548 Progress: 1496 on 2548 Progress: 1497 on 2548 Progress: 1498 on 2548 Progress: 1499 on 2548 Progress: 1500 on 2548 Progress: 1501 on 2548 Progress: 1502 on 2548 Progress: 1503 on 2548 Progress: 1504 on 2548 Progress: 1505 on 2548 Progress: 1506 on 2548 Progress: 1507 on 2548 Progress: 1508 on 2548 Progress: 1509 on 2548 Progress: 1510 on 2548 Progress: 1511 on 2548 Progress: 1512 on 2548 Progress: 1513 on 2548 Progress: 1514 on 2548 Progress: 1515 on 2548 Progress: 1516 on 2548 Progress: 1517 on 2548 Progress: 1518 on 2548 Progress: 1519 on 2548 Progress: 1520 on 2548 Progress: 1521 on 2548 Progress: 1522 on 2548 Progress: 1523 on 2548 Progress: 1524 on 2548 Progress: 1525 on 2548 Progress: 1526 on 2548 Progress: 1527 on 2548 Progress: 1528 on 2548 Progress: 1529 on 2548 Progress: 1530 on 2548 Progress: 1531 on 2548 Progress: 1532 on 2548 Progress: 1533 on 2548 Progress: 1534 on 2548 Progress: 1535 on 2548 Progress: 1536 on 2548 Progress: 1537 on 2548 Progress: 1538 on 2548 Progress: 1539 on 2548 Progress: 1540 on 2548 Progress: 1541 on 2548 Progress: 1542 on 2548 Progress: 1543 on 2548 Progress: 1544 on 2548 Progress: 1545 on 2548 Progress: 1546 on 2548 Progress: 1547 on 2548 Progress: 1548 on 2548 Progress: 1549 on 2548 Progress: 1550 on 2548 Progress: 1551 on 2548 Progress: 1552 on 2548 Progress: 1553 on 2548 Progress: 1554 on 2548 Progress: 1555 on 2548 Progress: 1556 on 2548 Progress: 1557 on 2548 Progress: 1558 on 2548 Progress: 1559 on 2548 Progress: 1560 on 2548 Progress: 1561 on 2548 Progress: 1562 on 2548 Progress: 1563 on 2548 Progress: 1564 on 2548 Progress: 1565 on 2548 Progress: 1566 on 2548 Progress: 1567 on 2548 Progress: 1568 on 2548 Progress: 1569 on 2548 Progress: 1570 on 2548 Progress: 1571 on 2548 Progress: 1572 on 2548 Progress: 1573 on 2548 Progress: 1574 on 2548 Progress: 1575 on 2548 Progress: 1576 on 2548 Progress: 1577 on 2548 Progress: 1578 on 2548 Progress: 1579 on 2548 Progress: 1580 on 2548 Progress: 1581 on 2548 Progress: 1582 on 2548 Progress: 1583 on 2548 Progress: 1584 on 2548 Progress: 1585 on 2548 Progress: 1586 on 2548 Progress: 1587 on 2548 Progress: 1588 on 2548 Progress: 1589 on 2548 Progress: 1590 on 2548 Progress: 1591 on 2548 Progress: 1592 on 2548 Progress: 1593 on 2548 Progress: 1594 on 2548 Progress: 1595 on 2548 Progress: 1596 on 2548 Progress: 1597 on 2548 Progress: 1598 on 2548 Progress: 1599 on 2548 Progress: 1600 on 2548 Progress: 1601 on 2548 Progress: 1602 on 2548 Progress: 1603 on 2548 Progress: 1604 on 2548 Progress: 1605 on 2548 Progress: 1606 on 2548 Progress: 1607 on 2548 Progress: 1608 on 2548 Progress: 1609 on 2548 Progress: 1610 on 2548 Progress: 1611 on 2548 Progress: 1612 on 2548 Progress: 1613 on 2548 Progress: 1614 on 2548 Progress: 1615 on 2548 Progress: 1616 on 2548 Progress: 1617 on 2548 Progress: 1618 on 2548 Progress: 1619 on 2548 Progress: 1620 on 2548 Progress: 1621 on 2548 Progress: 1622 on 2548 Progress: 1623 on 2548 Progress: 1624 on 2548 Progress: 1625 on 2548 Progress: 1626 on 2548 Progress: 1627 on 2548 Progress: 1628 on 2548 Progress: 1629 on 2548 Progress: 1630 on 2548 Progress: 1631 on 2548 Progress: 1632 on 2548 Progress: 1633 on 2548 Progress: 1634 on 2548 Progress: 1635 on 2548 Progress: 1636 on 2548 Progress: 1637 on 2548 Progress: 1638 on 2548 Progress: 1639 on 2548 Progress: 1640 on 2548 Progress: 1641 on 2548 Progress: 1642 on 2548 Progress: 1643 on 2548 Progress: 1644 on 2548 Progress: 1645 on 2548 Progress: 1646 on 2548 Progress: 1647 on 2548 Progress: 1648 on 2548 Progress: 1649 on 2548 Progress: 1650 on 2548 Progress: 1651 on 2548 Progress: 1652 on 2548 Progress: 1653 on 2548 Progress: 1654 on 2548 Progress: 1655 on 2548 Progress: 1656 on 2548 Progress: 1657 on 2548 Progress: 1658 on 2548 Progress: 1659 on 2548 Progress: 1660 on 2548 Progress: 1661 on 2548 Progress: 1662 on 2548 Progress: 1663 on 2548 Progress: 1664 on 2548 Progress: 1665 on 2548 Progress: 1666 on 2548 Progress: 1667 on 2548 Progress: 1668 on 2548 Progress: 1669 on 2548 Progress: 1670 on 2548 Progress: 1671 on 2548 Progress: 1672 on 2548 Progress: 1673 on 2548 Progress: 1674 on 2548 Progress: 1675 on 2548 Progress: 1676 on 2548 Progress: 1677 on 2548 Progress: 1678 on 2548 Progress: 1679 on 2548 Progress: 1680 on 2548 Progress: 1681 on 2548 Progress: 1682 on 2548 Progress: 1683 on 2548 Progress: 1684 on 2548 Progress: 1685 on 2548 Progress: 1686 on 2548 Progress: 1687 on 2548 Progress: 1688 on 2548 Progress: 1689 on 2548 Progress: 1690 on 2548 Progress: 1691 on 2548 Progress: 1692 on 2548 Progress: 1693 on 2548 Progress: 1694 on 2548 Progress: 1695 on 2548 Progress: 1696 on 2548 Progress: 1697 on 2548 Progress: 1698 on 2548 Progress: 1699 on 2548 Progress: 1700 on 2548 Progress: 1701 on 2548 Progress: 1702 on 2548 Progress: 1703 on 2548 Progress: 1704 on 2548 Progress: 1705 on 2548 Progress: 1706 on 2548 Progress: 1707 on 2548 Progress: 1708 on 2548 Progress: 1709 on 2548 Progress: 1710 on 2548 Progress: 1711 on 2548 Progress: 1712 on 2548 Progress: 1713 on 2548 Progress: 1714 on 2548 Progress: 1715 on 2548 Progress: 1716 on 2548 Progress: 1717 on 2548 Progress: 1718 on 2548 Progress: 1719 on 2548 Progress: 1720 on 2548 Progress: 1721 on 2548 Progress: 1722 on 2548 Progress: 1723 on 2548 Progress: 1724 on 2548 Progress: 1725 on 2548 Progress: 1726 on 2548 Progress: 1727 on 2548 Progress: 1728 on 2548 Progress: 1729 on 2548 Progress: 1730 on 2548 Progress: 1731 on 2548 Progress: 1732 on 2548 Progress: 1733 on 2548 Progress: 1734 on 2548 Progress: 1735 on 2548 Progress: 1736 on 2548 Progress: 1737 on 2548 Progress: 1738 on 2548 Progress: 1739 on 2548 Progress: 1740 on 2548 Progress: 1741 on 2548 Progress: 1742 on 2548 Progress: 1743 on 2548 Progress: 1744 on 2548 Progress: 1745 on 2548 Progress: 1746 on 2548 Progress: 1747 on 2548 Progress: 1748 on 2548 Progress: 1749 on 2548 Progress: 1750 on 2548 Progress: 1751 on 2548 Progress: 1752 on 2548 Progress: 1753 on 2548 Progress: 1754 on 2548 Progress: 1755 on 2548 Progress: 1756 on 2548 Progress: 1757 on 2548 Progress: 1758 on 2548 Progress: 1759 on 2548 Progress: 1760 on 2548 Progress: 1761 on 2548 Progress: 1762 on 2548 Progress: 1763 on 2548 Progress: 1764 on 2548 Progress: 1765 on 2548 Progress: 1766 on 2548 Progress: 1767 on 2548 Progress: 1768 on 2548 Progress: 1769 on 2548 Progress: 1770 on 2548 Progress: 1771 on 2548 Progress: 1772 on 2548 Progress: 1773 on 2548 Progress: 1774 on 2548 Progress: 1775 on 2548 Progress: 1776 on 2548 Progress: 1777 on 2548 Progress: 1778 on 2548 Progress: 1779 on 2548 Progress: 1780 on 2548 Progress: 1781 on 2548 Progress: 1782 on 2548 Progress: 1783 on 2548 Progress: 1784 on 2548 Progress: 1785 on 2548 Progress: 1786 on 2548 Progress: 1787 on 2548 Progress: 1788 on 2548 Progress: 1789 on 2548 Progress: 1790 on 2548 Progress: 1791 on 2548 Progress: 1792 on 2548 Progress: 1793 on 2548 Progress: 1794 on 2548 Progress: 1795 on 2548 Progress: 1796 on 2548 Progress: 1797 on 2548 Progress: 1798 on 2548 Progress: 1799 on 2548 Progress: 1800 on 2548 Progress: 1801 on 2548 Progress: 1802 on 2548 Progress: 1803 on 2548 Progress: 1804 on 2548 Progress: 1805 on 2548 Progress: 1806 on 2548 Progress: 1807 on 2548 Progress: 1808 on 2548 Progress: 1809 on 2548 Progress: 1810 on 2548 Progress: 1811 on 2548 Progress: 1812 on 2548 Progress: 1813 on 2548 Progress: 1814 on 2548 Progress: 1815 on 2548 Progress: 1816 on 2548 Progress: 1817 on 2548 Progress: 1818 on 2548 Progress: 1819 on 2548 Progress: 1820 on 2548 Progress: 1821 on 2548 Progress: 1822 on 2548 Progress: 1823 on 2548 Progress: 1824 on 2548 Progress: 1825 on 2548 Progress: 1826 on 2548 Progress: 1827 on 2548 Progress: 1828 on 2548 Progress: 1829 on 2548 Progress: 1830 on 2548 Progress: 1831 on 2548 Progress: 1832 on 2548 Progress: 1833 on 2548 Progress: 1834 on 2548 Progress: 1835 on 2548 Progress: 1836 on 2548 Progress: 1837 on 2548 Progress: 1838 on 2548 Progress: 1839 on 2548 Progress: 1840 on 2548 Progress: 1841 on 2548 Progress: 1842 on 2548 Progress: 1843 on 2548 Progress: 1844 on 2548 Progress: 1845 on 2548 Progress: 1846 on 2548 Progress: 1847 on 2548 Progress: 1848 on 2548 Progress: 1849 on 2548 Progress: 1850 on 2548 Progress: 1851 on 2548 Progress: 1852 on 2548 Progress: 1853 on 2548 Progress: 1854 on 2548 Progress: 1855 on 2548 Progress: 1856 on 2548 Progress: 1857 on 2548 Progress: 1858 on 2548 Progress: 1859 on 2548 Progress: 1860 on 2548 Progress: 1861 on 2548 Progress: 1862 on 2548 Progress: 1863 on 2548 Progress: 1864 on 2548 Progress: 1865 on 2548 Progress: 1866 on 2548 Progress: 1867 on 2548 Progress: 1868 on 2548 Progress: 1869 on 2548 Progress: 1870 on 2548 Progress: 1871 on 2548 Progress: 1872 on 2548 Progress: 1873 on 2548 Progress: 1874 on 2548 Progress: 1875 on 2548 Progress: 1876 on 2548 Progress: 1877 on 2548 Progress: 1878 on 2548 Progress: 1879 on 2548 Progress: 1880 on 2548 Progress: 1881 on 2548 Progress: 1882 on 2548 Progress: 1883 on 2548 Progress: 1884 on 2548 Progress: 1885 on 2548 Progress: 1886 on 2548 Progress: 1887 on 2548 Progress: 1888 on 2548 Progress: 1889 on 2548 Progress: 1890 on 2548 Progress: 1891 on 2548 Progress: 1892 on 2548 Progress: 1893 on 2548 Progress: 1894 on 2548 Progress: 1895 on 2548 Progress: 1896 on 2548 Progress: 1897 on 2548 Progress: 1898 on 2548 Progress: 1899 on 2548 Progress: 1900 on 2548 Progress: 1901 on 2548 Progress: 1902 on 2548 Progress: 1903 on 2548 Progress: 1904 on 2548 Progress: 1905 on 2548 Progress: 1906 on 2548 Progress: 1907 on 2548 Progress: 1908 on 2548 Progress: 1909 on 2548 Progress: 1910 on 2548 Progress: 1911 on 2548 Progress: 1912 on 2548 Progress: 1913 on 2548 Progress: 1914 on 2548 Progress: 1915 on 2548 Progress: 1916 on 2548 Progress: 1917 on 2548 Progress: 1918 on 2548 Progress: 1919 on 2548 Progress: 1920 on 2548 Progress: 1921 on 2548 Progress: 1922 on 2548 Progress: 1923 on 2548 Progress: 1924 on 2548 Progress: 1925 on 2548 Progress: 1926 on 2548 Progress: 1927 on 2548 Progress: 1928 on 2548 Progress: 1929 on 2548 Progress: 1930 on 2548 Progress: 1931 on 2548 Progress: 1932 on 2548 Progress: 1933 on 2548 Progress: 1934 on 2548 Progress: 1935 on 2548 Progress: 1936 on 2548 Progress: 1937 on 2548 Progress: 1938 on 2548 Progress: 1939 on 2548 Progress: 1940 on 2548 Progress: 1941 on 2548 Progress: 1942 on 2548 Progress: 1943 on 2548 Progress: 1944 on 2548 Progress: 1945 on 2548 Progress: 1946 on 2548 Progress: 1947 on 2548 Progress: 1948 on 2548 Progress: 1949 on 2548 Progress: 1950 on 2548 Progress: 1951 on 2548 Progress: 1952 on 2548 Progress: 1953 on 2548 Progress: 1954 on 2548 Progress: 1955 on 2548 Progress: 1956 on 2548 Progress: 1957 on 2548 Progress: 1958 on 2548 Progress: 1959 on 2548 Progress: 1960 on 2548 Progress: 1961 on 2548 Progress: 1962 on 2548 Progress: 1963 on 2548 Progress: 1964 on 2548 Progress: 1965 on 2548 Progress: 1966 on 2548 Progress: 1967 on 2548 Progress: 1968 on 2548 Progress: 1969 on 2548 Progress: 1970 on 2548 Progress: 1971 on 2548 Progress: 1972 on 2548 Progress: 1973 on 2548 Progress: 1974 on 2548 Progress: 1975 on 2548 Progress: 1976 on 2548 Progress: 1977 on 2548 Progress: 1978 on 2548 Progress: 1979 on 2548 Progress: 1980 on 2548 Progress: 1981 on 2548 Progress: 1982 on 2548 Progress: 1983 on 2548 Progress: 1984 on 2548 Progress: 1985 on 2548 Progress: 1986 on 2548 Progress: 1987 on 2548 Progress: 1988 on 2548 Progress: 1989 on 2548 Progress: 1990 on 2548 Progress: 1991 on 2548 Progress: 1992 on 2548 Progress: 1993 on 2548 Progress: 1994 on 2548 Progress: 1995 on 2548 Progress: 1996 on 2548 Progress: 1997 on 2548 Progress: 1998 on 2548 Progress: 1999 on 2548 Progress: 2000 on 2548 Progress: 2001 on 2548 Progress: 2002 on 2548 Progress: 2003 on 2548 Progress: 2004 on 2548 Progress: 2005 on 2548 Progress: 2006 on 2548 Progress: 2007 on 2548 Progress: 2008 on 2548 Progress: 2009 on 2548 Progress: 2010 on 2548 Progress: 2011 on 2548 Progress: 2012 on 2548 Progress: 2013 on 2548 Progress: 2014 on 2548 Progress: 2015 on 2548 Progress: 2016 on 2548 Progress: 2017 on 2548 Progress: 2018 on 2548 Progress: 2019 on 2548 Progress: 2020 on 2548 Progress: 2021 on 2548 Progress: 2022 on 2548 Progress: 2023 on 2548 Progress: 2024 on 2548 Progress: 2025 on 2548 Progress: 2026 on 2548 Progress: 2027 on 2548 Progress: 2028 on 2548 Progress: 2029 on 2548 Progress: 2030 on 2548 Progress: 2031 on 2548 Progress: 2032 on 2548 Progress: 2033 on 2548 Progress: 2034 on 2548 Progress: 2035 on 2548 Progress: 2036 on 2548 Progress: 2037 on 2548 Progress: 2038 on 2548 Progress: 2039 on 2548 Progress: 2040 on 2548 Progress: 2041 on 2548 Progress: 2042 on 2548 Progress: 2043 on 2548 Progress: 2044 on 2548 Progress: 2045 on 2548 Progress: 2046 on 2548 Progress: 2047 on 2548 Progress: 2048 on 2548 Progress: 2049 on 2548 Progress: 2050 on 2548 Progress: 2051 on 2548 Progress: 2052 on 2548 Progress: 2053 on 2548 Progress: 2054 on 2548 Progress: 2055 on 2548 Progress: 2056 on 2548 Progress: 2057 on 2548 Progress: 2058 on 2548 Progress: 2059 on 2548 Progress: 2060 on 2548 Progress: 2061 on 2548 Progress: 2062 on 2548 Progress: 2063 on 2548 Progress: 2064 on 2548 Progress: 2065 on 2548 Progress: 2066 on 2548 Progress: 2067 on 2548 Progress: 2068 on 2548 Progress: 2069 on 2548 Progress: 2070 on 2548 Progress: 2071 on 2548 Progress: 2072 on 2548 Progress: 2073 on 2548 Progress: 2074 on 2548 Progress: 2075 on 2548 Progress: 2076 on 2548 Progress: 2077 on 2548 Progress: 2078 on 2548 Progress: 2079 on 2548 Progress: 2080 on 2548 Progress: 2081 on 2548 Progress: 2082 on 2548 Progress: 2083 on 2548 Progress: 2084 on 2548 Progress: 2085 on 2548 Progress: 2086 on 2548 Progress: 2087 on 2548 Progress: 2088 on 2548 Progress: 2089 on 2548 Progress: 2090 on 2548 Progress: 2091 on 2548 Progress: 2092 on 2548 Progress: 2093 on 2548 Progress: 2094 on 2548 Progress: 2095 on 2548 Progress: 2096 on 2548 Progress: 2097 on 2548 Progress: 2098 on 2548 Progress: 2099 on 2548 Progress: 2100 on 2548 Progress: 2101 on 2548 Progress: 2102 on 2548 Progress: 2103 on 2548 Progress: 2104 on 2548 Progress: 2105 on 2548 Progress: 2106 on 2548 Progress: 2107 on 2548 Progress: 2108 on 2548 Progress: 2109 on 2548 Progress: 2110 on 2548 Progress: 2111 on 2548 Progress: 2112 on 2548 Progress: 2113 on 2548 Progress: 2114 on 2548 Progress: 2115 on 2548 Progress: 2116 on 2548 Progress: 2117 on 2548 Progress: 2118 on 2548 Progress: 2119 on 2548 Progress: 2120 on 2548 Progress: 2121 on 2548 Progress: 2122 on 2548 Progress: 2123 on 2548 Progress: 2124 on 2548 Progress: 2125 on 2548 Progress: 2126 on 2548 Progress: 2127 on 2548 Progress: 2128 on 2548 Progress: 2129 on 2548 Progress: 2130 on 2548 Progress: 2131 on 2548 Progress: 2132 on 2548 Progress: 2133 on 2548 Progress: 2134 on 2548 Progress: 2135 on 2548 Progress: 2136 on 2548 Progress: 2137 on 2548 Progress: 2138 on 2548 Progress: 2139 on 2548 Progress: 2140 on 2548 Progress: 2141 on 2548 Progress: 2142 on 2548 Progress: 2143 on 2548 Progress: 2144 on 2548 Progress: 2145 on 2548 Progress: 2146 on 2548 Progress: 2147 on 2548 Progress: 2148 on 2548 Progress: 2149 on 2548 Progress: 2150 on 2548 Progress: 2151 on 2548 Progress: 2152 on 2548 Progress: 2153 on 2548 Progress: 2154 on 2548 Progress: 2155 on 2548 Progress: 2156 on 2548 Progress: 2157 on 2548 Progress: 2158 on 2548 Progress: 2159 on 2548 Progress: 2160 on 2548 Progress: 2161 on 2548 Progress: 2162 on 2548 Progress: 2163 on 2548 Progress: 2164 on 2548 Progress: 2165 on 2548 Progress: 2166 on 2548 Progress: 2167 on 2548 Progress: 2168 on 2548 Progress: 2169 on 2548 Progress: 2170 on 2548 Progress: 2171 on 2548 Progress: 2172 on 2548 Progress: 2173 on 2548 Progress: 2174 on 2548 Progress: 2175 on 2548 Progress: 2176 on 2548 Progress: 2177 on 2548 Progress: 2178 on 2548 Progress: 2179 on 2548 Progress: 2180 on 2548 Progress: 2181 on 2548 Progress: 2182 on 2548 Progress: 2183 on 2548 Progress: 2184 on 2548 Progress: 2185 on 2548 Progress: 2186 on 2548 Progress: 2187 on 2548 Progress: 2188 on 2548 Progress: 2189 on 2548 Progress: 2190 on 2548 Progress: 2191 on 2548 Progress: 2192 on 2548 Progress: 2193 on 2548 Progress: 2194 on 2548 Progress: 2195 on 2548 Progress: 2196 on 2548 Progress: 2197 on 2548 Progress: 2198 on 2548 Progress: 2199 on 2548 Progress: 2200 on 2548 Progress: 2201 on 2548 Progress: 2202 on 2548 Progress: 2203 on 2548 Progress: 2204 on 2548 Progress: 2205 on 2548 Progress: 2206 on 2548 Progress: 2207 on 2548 Progress: 2208 on 2548 Progress: 2209 on 2548 Progress: 2210 on 2548 Progress: 2211 on 2548 Progress: 2212 on 2548 Progress: 2213 on 2548 Progress: 2214 on 2548 Progress: 2215 on 2548 Progress: 2216 on 2548 Progress: 2217 on 2548 Progress: 2218 on 2548 Progress: 2219 on 2548 Progress: 2220 on 2548 Progress: 2221 on 2548 Progress: 2222 on 2548 Progress: 2223 on 2548 Progress: 2224 on 2548 Progress: 2225 on 2548 Progress: 2226 on 2548 Progress: 2227 on 2548 Progress: 2228 on 2548 Progress: 2229 on 2548 Progress: 2230 on 2548 Progress: 2231 on 2548 Progress: 2232 on 2548 Progress: 2233 on 2548 Progress: 2234 on 2548 Progress: 2235 on 2548 Progress: 2236 on 2548 Progress: 2237 on 2548 Progress: 2238 on 2548 Progress: 2239 on 2548 Progress: 2240 on 2548 Progress: 2241 on 2548 Progress: 2242 on 2548 Progress: 2243 on 2548 Progress: 2244 on 2548 Progress: 2245 on 2548 Progress: 2246 on 2548 Progress: 2247 on 2548 Progress: 2248 on 2548 Progress: 2249 on 2548 Progress: 2250 on 2548 Progress: 2251 on 2548 Progress: 2252 on 2548 Progress: 2253 on 2548 Progress: 2254 on 2548 Progress: 2255 on 2548 Progress: 2256 on 2548 Progress: 2257 on 2548 Progress: 2258 on 2548 Progress: 2259 on 2548 Progress: 2260 on 2548 Progress: 2261 on 2548 Progress: 2262 on 2548 Progress: 2263 on 2548 Progress: 2264 on 2548 Progress: 2265 on 2548 Progress: 2266 on 2548 Progress: 2267 on 2548 Progress: 2268 on 2548 Progress: 2269 on 2548 Progress: 2270 on 2548 Progress: 2271 on 2548 Progress: 2272 on 2548 Progress: 2273 on 2548 Progress: 2274 on 2548 Progress: 2275 on 2548 Progress: 2276 on 2548 Progress: 2277 on 2548 Progress: 2278 on 2548 Progress: 2279 on 2548 Progress: 2280 on 2548 Progress: 2281 on 2548 Progress: 2282 on 2548 Progress: 2283 on 2548 Progress: 2284 on 2548 Progress: 2285 on 2548 Progress: 2286 on 2548 Progress: 2287 on 2548 Progress: 2288 on 2548 Progress: 2289 on 2548 Progress: 2290 on 2548 Progress: 2291 on 2548 Progress: 2292 on 2548 Progress: 2293 on 2548 Progress: 2294 on 2548 Progress: 2295 on 2548 Progress: 2296 on 2548 Progress: 2297 on 2548 Progress: 2298 on 2548 Progress: 2299 on 2548 Progress: 2300 on 2548 Progress: 2301 on 2548 Progress: 2302 on 2548 Progress: 2303 on 2548 Progress: 2304 on 2548 Progress: 2305 on 2548 Progress: 2306 on 2548 Progress: 2307 on 2548 Progress: 2308 on 2548 Progress: 2309 on 2548 Progress: 2310 on 2548 Progress: 2311 on 2548 Progress: 2312 on 2548 Progress: 2313 on 2548 Progress: 2314 on 2548 Progress: 2315 on 2548 Progress: 2316 on 2548 Progress: 2317 on 2548 Progress: 2318 on 2548 Progress: 2319 on 2548 Progress: 2320 on 2548 Progress: 2321 on 2548 Progress: 2322 on 2548 Progress: 2323 on 2548 Progress: 2324 on 2548 Progress: 2325 on 2548 Progress: 2326 on 2548 Progress: 2327 on 2548 Progress: 2328 on 2548 Progress: 2329 on 2548 Progress: 2330 on 2548 Progress: 2331 on 2548 Progress: 2332 on 2548 Progress: 2333 on 2548 Progress: 2334 on 2548 Progress: 2335 on 2548 Progress: 2336 on 2548 Progress: 2337 on 2548 Progress: 2338 on 2548 Progress: 2339 on 2548 Progress: 2340 on 2548 Progress: 2341 on 2548 Progress: 2342 on 2548 Progress: 2343 on 2548 Progress: 2344 on 2548 Progress: 2345 on 2548 Progress: 2346 on 2548 Progress: 2347 on 2548 Progress: 2348 on 2548 Progress: 2349 on 2548 Progress: 2350 on 2548 Progress: 2351 on 2548 Progress: 2352 on 2548 Progress: 2353 on 2548 Progress: 2354 on 2548 Progress: 2355 on 2548 Progress: 2356 on 2548 Progress: 2357 on 2548 Progress: 2358 on 2548 Progress: 2359 on 2548 Progress: 2360 on 2548 Progress: 2361 on 2548 Progress: 2362 on 2548 Progress: 2363 on 2548 Progress: 2364 on 2548 Progress: 2365 on 2548 Progress: 2366 on 2548 Progress: 2367 on 2548 Progress: 2368 on 2548 Progress: 2369 on 2548 Progress: 2370 on 2548 Progress: 2371 on 2548 Progress: 2372 on 2548 Progress: 2373 on 2548 Progress: 2374 on 2548 Progress: 2375 on 2548 Progress: 2376 on 2548 Progress: 2377 on 2548 Progress: 2378 on 2548 Progress: 2379 on 2548 Progress: 2380 on 2548 Progress: 2381 on 2548 Progress: 2382 on 2548 Progress: 2383 on 2548 Progress: 2384 on 2548 Progress: 2385 on 2548 Progress: 2386 on 2548 Progress: 2387 on 2548 Progress: 2388 on 2548 Progress: 2389 on 2548 Progress: 2390 on 2548 Progress: 2391 on 2548 Progress: 2392 on 2548 Progress: 2393 on 2548 Progress: 2394 on 2548 Progress: 2395 on 2548 Progress: 2396 on 2548 Progress: 2397 on 2548 Progress: 2398 on 2548 Progress: 2399 on 2548 Progress: 2400 on 2548 Progress: 2401 on 2548 Progress: 2402 on 2548 Progress: 2403 on 2548 Progress: 2404 on 2548 Progress: 2405 on 2548 Progress: 2406 on 2548 Progress: 2407 on 2548 Progress: 2408 on 2548 Progress: 2409 on 2548 Progress: 2410 on 2548 Progress: 2411 on 2548 Progress: 2412 on 2548 Progress: 2413 on 2548 Progress: 2414 on 2548 Progress: 2415 on 2548 Progress: 2416 on 2548 Progress: 2417 on 2548 Progress: 2418 on 2548 Progress: 2419 on 2548 Progress: 2420 on 2548 Progress: 2421 on 2548 Progress: 2422 on 2548 Progress: 2423 on 2548 Progress: 2424 on 2548 Progress: 2425 on 2548 Progress: 2426 on 2548 Progress: 2427 on 2548 Progress: 2428 on 2548 Progress: 2429 on 2548 Progress: 2430 on 2548 Progress: 2431 on 2548 Progress: 2432 on 2548 Progress: 2433 on 2548 Progress: 2434 on 2548 Progress: 2435 on 2548 Progress: 2436 on 2548 Progress: 2437 on 2548 Progress: 2438 on 2548 Progress: 2439 on 2548 Progress: 2440 on 2548 Progress: 2441 on 2548 Progress: 2442 on 2548 Progress: 2443 on 2548 Progress: 2444 on 2548 Progress: 2445 on 2548 Progress: 2446 on 2548 Progress: 2447 on 2548 Progress: 2448 on 2548 Progress: 2449 on 2548 Progress: 2450 on 2548 Progress: 2451 on 2548 Progress: 2452 on 2548 Progress: 2453 on 2548 Progress: 2454 on 2548 Progress: 2455 on 2548 Progress: 2456 on 2548 Progress: 2457 on 2548 Progress: 2458 on 2548 Progress: 2459 on 2548 Progress: 2460 on 2548 Progress: 2461 on 2548 Progress: 2462 on 2548 Progress: 2463 on 2548 Progress: 2464 on 2548 Progress: 2465 on 2548 Progress: 2466 on 2548 Progress: 2467 on 2548 Progress: 2468 on 2548 Progress: 2469 on 2548 Progress: 2470 on 2548 Progress: 2471 on 2548 Progress: 2472 on 2548 Progress: 2473 on 2548 Progress: 2474 on 2548 Progress: 2475 on 2548 Progress: 2476 on 2548 Progress: 2477 on 2548 Progress: 2478 on 2548 Progress: 2479 on 2548 Progress: 2480 on 2548 Progress: 2481 on 2548 Progress: 2482 on 2548 Progress: 2483 on 2548 Progress: 2484 on 2548 Progress: 2485 on 2548 Progress: 2486 on 2548 Progress: 2487 on 2548 Progress: 2488 on 2548 Progress: 2489 on 2548 Progress: 2490 on 2548 Progress: 2491 on 2548 Progress: 2492 on 2548 Progress: 2493 on 2548 Progress: 2494 on 2548 Progress: 2495 on 2548 Progress: 2496 on 2548 Progress: 2497 on 2548 Progress: 2498 on 2548 Progress: 2499 on 2548 Progress: 2500 on 2548 Progress: 2501 on 2548 Progress: 2502 on 2548 Progress: 2503 on 2548 Progress: 2504 on 2548 Progress: 2505 on 2548 Progress: 2506 on 2548 Progress: 2507 on 2548 Progress: 2508 on 2548 Progress: 2509 on 2548 Progress: 2510 on 2548 Progress: 2511 on 2548 Progress: 2512 on 2548 Progress: 2513 on 2548 Progress: 2514 on 2548 Progress: 2515 on 2548 Progress: 2516 on 2548 Progress: 2517 on 2548 Progress: 2518 on 2548 Progress: 2519 on 2548 Progress: 2520 on 2548 Progress: 2521 on 2548 Progress: 2522 on 2548 Progress: 2523 on 2548 Progress: 2524 on 2548 Progress: 2525 on 2548 Progress: 2526 on 2548 Progress: 2527 on 2548 Progress: 2528 on 2548 Progress: 2529 on 2548 Progress: 2530 on 2548 Progress: 2531 on 2548 Progress: 2532 on 2548 Progress: 2533 on 2548 Progress: 2534 on 2548 Progress: 2535 on 2548 Progress: 2536 on 2548 Progress: 2537 on 2548 Progress: 2538 on 2548 Progress: 2539 on 2548 Progress: 2540 on 2548 Progress: 2541 on 2548 Progress: 2542 on 2548 Progress: 2543 on 2548 Progress: 2544 on 2548 Progress: 2545 on 2548 Progress: 2546 on 2548 Progress: 2547 on 2548 Progress: 2548 on 2548
pbl_bn_viaf_import <- pbl_bn_viaf_import %>%
rename(pbl_id = TW_TWORCA_ID,
pbl_nazwisko = TW_NAZWISKO,
pbl_imie = TW_IMIE,
BN_id = id,
BN_name = name) %>%
mutate(czy_ten_sam = "tak") %>%
select(pbl_id,pbl_nazwisko,pbl_imie,BN_id,BN_name,czy_ten_sam,viaf) %>%
unique()